Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.024 c
14-1101888636
Photo
2004-12-01 11:10
2004.12.19
Adove Photoshop


4-1099376896
WaS
2004-11-02 09:28
2004.12.19
Как установить фокус на папку в открытом окне зная её путь


14-1101848169
Некто
2004-11-30 23:56
2004.12.19
Алгоритм работы виртуальной памяти


1-1102081229
Muhan
2004-12-03 16:40
2004.12.19
Можно ли в Stringgrid вставить картинку?


9-1092932198
JUS
2004-08-19 20:16
2004.12.19
Дайте ссылку, где я могу скачать компоненту PowerDraw 3