Главная страница
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.023 c
3-1101117504
Palladin
2004-11-22 12:58
2004.12.19
Access и begin transaction


1-1102426790
Aleksandr.
2004-12-07 16:39
2004.12.19
Какое сообщение отправить TMemo, чтобы он проскроллировался?


14-1101932119
Verg
2004-12-01 23:15
2004.12.19
А в чем сила?


4-1099914945
Dropper
2004-11-08 14:55
2004.12.19
Перехват данных потока


3-1100427250
integer
2004-11-14 13:14
2004.12.19
помогите з запросом