Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.037 c
14-1101935717
Мирон
2004-12-02 00:15
2004.12.19
Читаю "Паттерны...". Есть вопрос.


1-1102255541
studentRSU
2004-12-05 17:05
2004.12.19
Работа с Excel


3-1100983386
ser_ega
2004-11-20 23:43
2004.12.19
Oбработчик DBGrid1DrawDataCell


9-1082122366
Wiz@rd
2004-04-16 17:32
2004.12.19
Нифига себе игрушка


1-1101876349
Vladik
2004-12-01 07:45
2004.12.19
Наследование форм и свойства в инспекторе объектов




   Наверх