![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Подскажите плиз, как осуществить фильтрацию записей в 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
Вот спасибо ![]() Малость передалал и все заработало!!! |