Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2014, 17:40   #1
alexpadre
Новичок
Джуниор
 
Регистрация: 07.01.2014
Сообщений: 10
По умолчанию Фильтрация с использованием ComboBox и CheckBox

На форме имеются элементы Query1, Button1, DBGrid, Table1, Table2, Table3, ComboBox1, ComboBox2 и к ним соотвецтвенно CheckBox1 и CheckBox2. Есть таблицы Vakansii, Doljnost, Obrazovanie. Вывожу поля Doljnost_name и Obrazovanie_name в таблицу Vakansii с помошью Lookup (выпадающие списки в выбором любой должности и образования). Так же делаю ComboBox1, ComboBox2 выпадающими списками с помощью процедуры:

Код Delphi:
Код:
1 procedure TForm1.FormActivate(Sender: TObject);
2 begin
3  while not table2.Eof do
4    begin
5      ComboBox1.items.Add(table2.FieldByName('Doljnost_name').Value);
6      table2.Next;
7    end;
8  combobox1.ItemIndex:=0;
9    while not table3.Eof do
10    begin
11      ComboBox2.items.Add(table3.FieldByName('Obrazovanie_name').Value);
12      table3.Next;
13    end;
14  combobox2.ItemIndex:=0;
15    end;
Вопрос: как сделать фильтрацию с помощью SQL-запроса, что бы при выборе CheckBox1 и соотвецтвующие ему ComboBox1, или CheckBox2 и соотвецтвующие ему ComboBox2, или их двоих одновременно.
Предположительно должно выглядеть так, но что писать я не знаю.

Код Delphi:
Код:
1 procedure TForm1.Button1Click(Sender: TObject);
2 begin
3 if button1.Caption='Фильтровать' then button1.Caption:='Отменить фильтр'
4 else
5   begin
6    button1.Caption:='Фильтровать';
7    dbgrid1.DataSource:=datasource1;
8    exit;
9   end;
10 if .....
11 if.....
12 query1.SQL.Clear;
13 query1.SQL.Add('SELECT * FROM Vakansii,Doljnost,Obrazovanie where Vakansii.ID_Doljnost=Doljnost.ID_Doljnost and 
Obrazovanie.ID_Obrazovanie=Vakansii.ID_Obrazovanie ');
14 query1.Open;
15 dbgrid1.DataSource:=datasource2;
16 end;

Последний раз редактировалось alexpadre; 07.01.2014 в 19:18.
alexpadre вне форума Ответить с цитированием
Старый 12.01.2014, 09:12   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

В общих чертах идея правильная. На основе CheckBox'ов и ComboBox'ов вполне можно организовать фильтрацию данных.
Перед формированием нового SQL запроса query необходимо закрыть.
Код:
query1.Сlose;
ИМХО:лучше использовать компоненты TDBCheckBox и TDLookupComboBox.
В отличие от обычных CheckBox и ComboBox они свои значения берут напрямую из БД, которой они подключены через соответствующие компоненты. Поэтому, в частности отпадает необходимость формировать список программно.
Streletz вне форума Ответить с цитированием
Старый 13.01.2014, 21:26   #3
demiware
Пользователь
 
Аватар для demiware
 
Регистрация: 13.01.2014
Сообщений: 21
По умолчанию

Цитата:
лучше использовать компоненты TDBCheckBox и TDLookupComboBox.
В отличие от обычных CheckBox и ComboBox они свои значения берут напрямую из БД, которой они подключены через соответствующие компоненты. Поэтому, в частности отпадает необходимость формировать список программно.

Это с какой радости, вообще DB контролы предназначены не для этого, этож надо копии датасеты рид-онли паралельные создавать. Нормально автор начал с обычных компонентов - не BD...
Приглашаю в мой блог http://demiware.ru о программировании в Delphi, PHP(Symfony)...
demiware вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CheckBox и ComboBox в StringGrid ZeitGeist7 Общие вопросы Delphi 16 22.04.2012 20:22
Открытие формы с использованием CheckBox Neo_AVE C++ Builder 6 09.03.2011 21:00
Фильтрация с помощью CheckBox rocknrolla Помощь студентам 0 21.12.2009 21:10
Фильтрация в Adoquery с использованием or and ArtInt БД в Delphi 20 13.05.2009 21:24
Фильтрация в Delphi с помощью Combobox Веснушка_ната Помощь студентам 4 07.04.2009 02:36