Главная страница
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-1101471245
ПЛОВ
2004-11-26 15:14
2004.12.19
Мою ветку про Ющенка удалили


14-1101999308
Denis_
2004-12-02 17:55
2004.12.19
Где скачать русско-англиский словарь?


1-1101725005
ranetka
2004-11-29 13:43
2004.12.19
как разрулить circular unit reference?


4-1099866123
Змей
2004-11-08 01:22
2004.12.19
ЛОгин юзера


14-1101641914
ИМХО
2004-11-28 14:38
2004.12.19
Кого лучше завести в качестве домашн.животного: кошку или собаку?