![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтр или выборка в DBGrid [D6, D7, Paradox]
DuchmanSoft © (2004-11-21 20:47:00)Вопрос у меня такой есть две таблицы в одно хранятся наименования товара, а в другой наименования товара и его модели.
Например:
1 Таблица 2 Таблица
Телевизор LG Телевизор LG GD768
Телевизор SONY Телевизор LG GD968
Телевизор SONY FT6329
Телевизор SONY FT7329
Как зделать фитрацию или выборку во второй таблице по выбору значения во второй?
DuchmanSoft (2004-11-23 09:21:00) [1]Получилось!
Table3.Filtered:=True;
Table3.Filter:='NAMETovar='+Chr(39)+DBGrid4.SelectedField.Text+Chr(39);
Нехватало символа ' = Chr(39) в строке фильтра.
Спасибо за советы.
Тема закрыта.
DuchmanSoft (2004-11-23 08:44:00) [2]Что то я эти запросы не догоняю.
Пробовал через 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"
sniknik (2004-11-21 22:14:00) [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 или нет, проверь)
Lexa (2004-11-21 22:06:00) [4]На сколько я понял вопрос тебе надо выбрать из второй таблицы все наименования моделей для определенного товара ... в SQL запросе на выборку добавь условие Where Где укажи условия критерия по которому ты отбираешь записи в твоем случае это по вторичному ключу
sniknik (2004-11-21 22:05:00) [5]элементарным запросом
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
или организовать связь мастер детайл (в дельфевых примерах есть пример такой связи)