Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > Фильтрация с использованием ComboBox и CheckBox


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

procedure TForm1.FormActivate(Sender: TObject);
begin
  while not table2.Eof do
    begin
      ComboBox1.items.Add(table2.FieldByName('Doljnost_name').Value);
      table2.Next;
    end;
  combobox1.ItemIndex:=0;
    while not table3.Eof do
    begin
      ComboBox2.items.Add(table3.FieldByName('Obrazovanie_name').Value);
      table3.Next;
    end;
  combobox2.ItemIndex:=0;
    end;

Вопрос: как сделать фильтрацию с помощью SQL-запроса, что бы при выборе CheckBox1 и соотвецтвующие ему ComboBox1, или CheckBox2 и соотвецтвующие ему ComboBox2, или их двоих одновременно.
 Предположительно должно выглядеть так, но что писать я не знаю.
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
 if button1.Caption='Фильтровать' then button1.Caption:='Отменить фильтр'
  else
   begin
    button1.Caption:='Фильтровать';
    dbgrid1.DataSource:=datasource1;
    exit;
   end;
 if .....
 if.....
 query1.SQL.Clear;
 query1.SQL.Add('SELECT * FROM Vakansii,Doljnost,Obrazovanie where Vakansii.ID_Doljnost=Doljnost.ID_Doljnost and Obrazovanie.ID_Obrazovanie=Vakansii.ID_Obrazovanie ');
 query1.Open;
 dbgrid1.DataSource:=datasource2;
end;

Автор: JenHak 28.2.2014, 22:54
В компоненте Query1 есть параметр Filter
заносим в него данные типа 
Код

Фильтруемый столбец = 'Значение' and ....

значение Query1.Filtred := true

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)