Текущий архив: 2004.12.19;
Скачать: CL | DM;
Вниз
Фильтр или выборка в DBGrid Найти похожие ветки
← →
DuchmanSoft (2004-11-21 20:47) [0]Вопрос у меня такой есть две таблицы в одно хранятся наименования товара, а в другой наименования товара и его модели.
Например:
1 Таблица 2 Таблица
Телевизор LG Телевизор LG GD768
Телевизор SONY Телевизор LG GD968
Телевизор SONY FT6329
Телевизор SONY FT7329
Как зделать фитрацию или выборку во второй таблице по выбору значения во второй?
← →
sniknik © (2004-11-21 22:05) [1]элементарным запросом
SELECT C.Поле2+" "+O.Поле2 FROM "1 Таблица" C JOIN "2 Таблица" O ON (C.Поле1= O.Поле1) WHERE C.Поле2="Телевизор LG"
должно быть связующее поле (здесь Поле1)
например
1 Таблица 2 Таблица
Поле1 Поле2 Поле1 Поле2
1 Телевизор LG 1 GD768
2 Телевизор SONY 1 GD968
2 FT6329
2 FT7329
или организовать связь мастер детайл (в дельфевых примерах есть пример такой связи)
← →
Lexa (2004-11-21 22:06) [2]На сколько я понял вопрос тебе надо выбрать из второй таблицы все наименования моделей для определенного товара ... в SQL запросе на выборку добавь условие Where Где укажи условия критерия по которому ты отбираешь записи в твоем случае это по вторичному ключу
← →
sniknik © (2004-11-21 22:14) [3]если поменять структуру таблиц проблемно то можно с вычислением
SELECT O.Поле2 FROM "1 Таблица" C JOIN "2 Таблица" O ON (C.Поле1= SUBSTRING(O.Поле1 FROM 1 FOR 12) WHERE C.Поле2="Телевизор LG"
(хотя и не уверен точно, пойдет это в local sql или нет, проверь)
← →
DuchmanSoft © (2004-11-23 08:44) [4]Что то я эти запросы не догоняю.
Пробовал через property Query
...
var Query1 : TQuery;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add("SELECT DBGrid4.Fields[0]+" "+DBGrid3.Fields[1] FROM "1 Таблица" C JOIN "2 Таблица" O ON (C.Поле1= O.Поле1) WHERE C.Поле2="Телевизор LG"");
// Вот здесь я не понял что куда подставлять.
Query1.ExecSQL;
end;
...
А посредствам фильтра самой таблицы это нельзя зделать?
Например:
Table3.Filtered:=True;
Table3.Fields.FindField("NAMETovar");
Table3.Filter:=DBGrid4.SelectedField.Text;
Но после этого выходит ошибка
Table3: "Field "Телевизор LG" not found"
← →
DuchmanSoft © (2004-11-23 09:21) [5]Получилось!
Table3.Filtered:=True;
Table3.Filter:="NAMETovar="+Chr(39)+DBGrid4.SelectedField.Text+Chr(39);
Нехватало символа " = Chr(39) в строке фильтра.
Спасибо за советы.
Тема закрыта.
Страницы: 1 вся ветка
Текущий архив: 2004.12.19;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.023 c