|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Фильтрация записей в DBGrid по двум и более ComboBox
Подскажите плиз, как осуществить фильтрацию записей в DBGrid по двум и более ComboBox.
Когда он один - проблем нет: TableWERS.Filter := 'Name=''' + ComboBox12.Text+''''; Пробовал разные варианты "по аналогии" с SQL - не получется В DBGrid должна быть именно таблица, запросы не прокатят... Помогите, плиз!!!! |
#2
|
||||
|
||||
Используй событие OnFilterRecord. В справке про него довольно подробно написано.
|
#3
|
|||
|
|||
Сам нашел.
Вот пример: //Первый фильтр procedure TFinanse2.ComboBox5Change(Sender: TObject); begin ComboBox6.Text := ''; Table4.Filtered := False; Table4.Filtered := True; if (ComboBox5.Text = '') and (Table4.Active = True) then Table4.Active := False; if (ComboBox5.Text <> '') and (Table4.Active = False) then Table4.Active := True; Table4.Filter := 'Kontragent=''' + ComboBox5.Text+''''; end; //второй фильтр procedure TFinanse2.ComboBox6Change(Sender: TObject); begin if ComboBox5.Text = '' then Exit; if Combobox6.Text = 'Только готовые' then Label33.Caption := 'Готов'; if Combobox6.Text = 'Только "В работе"' then Label33.Caption := 'В работе'; with Table4 do begin Filtered := False; Filter := 'Gotov=''' + Label33.Caption+''''; Filtered := True; end; Можно добавлять следующие фильтры по тому же алгоритму, что и второй фильтр. |
#4
|
|||
|
|||
Нет, не получилось...
Такой вариант отменяет первый фильтр и активирует второй Так что вопрос остается открытым. Подскажите!! Как все же сделать двойной фильтр, лучше в виде примера кода, а то я чайник, могу не понять объяснения... |
#5
|
||||
|
||||
Для тех кто в танке. OnFilterRecord
|
#6
|
|||
|
|||
Видимо я не в танке, а под ним...
Вот код: procedure TFinanse2.Table4FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin if ComboBox5.Text = '' then Exit; Table4.Filter := 'Kontragent=''' + ComboBox5.Text+''''; Accept := DataSet['Gotov'].AsString = 'Ãîòîâ'; end; НЕ РАБОТАЕТ И не могу разобраться, почему |
#7
|
||||
|
||||
пример:
на форме Edit1, Table1, Button1 заполняем Edit1 и жмем на батон всего две процедуры 1: Код:
procedure TForm1.Button1Click(Sender: TObject); begin Table1.Filtered:=not(Table1.Filtered); if Table1.Filtered then Button1.Caption:='Filtered' else Button1.Caption:='not filtered'; end; Код:
procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin if Length(Edit1.Text)<1 then Exit; Accept:= UpperCase(DataSet.FieldByName('FAM').AsString)=UpperCase(Edit1.Text); end; |
#8
|
|||
|
|||
Aristarh Dark
Вот спасибо Малость передалал и все заработало!!! |