Главная страница
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.035 c
14-1101897095
Xaker
2004-12-01 13:31
2004.12.19
HookMonitor - или КОНЕЦ ВСЕМ Keylogger am !


14-1101397539
Kerk
2004-11-25 18:45
2004.12.19
Windows Media Player готовился с помощью вареза


14-1101398500
Vn
2004-11-25 19:01
2004.12.19
Из каких СМИ узнаем информацию?


14-1101633700
Шишкин Илья
2004-11-28 12:21
2004.12.19
Локальная сеть и с ней связанное


6-1097146639
Leksiy
2004-10-07 14:57
2004.12.19
получение ай пи с помощью библиотеки