Форум: "Базы";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
ВнизТеоретический вопрос про фильтры Найти похожие ветки
← →
VAleksey (2002-06-14 09:47) [0]Можно ли на отфильтрованную таблицу наложить еще один фильтр не снимая старый ?
← →
Lord Warlock (2002-06-14 09:55) [1]Естественно можно.
Например у тебя фильтр записан в событии OnFilterRecords,
в свойство Filter пишешь еще один и они работают вместе
← →
VAleksey (2002-06-14 10:07) [2]
> Lord Warlock © (14.06.02 09:55)
ЭЭЭ дарагой -) не нада мне такие варианты предлагать ! -) Эт я и сам знаю. Чай не одну книгу прочитал.
Поясню. Вопрос практической значимости не имеет. Имеется в виду OnFilterRecord.
PS
Cкорее всего нельзя, но интересно... а вдруг ?
← →
Lola (2002-06-14 10:47) [3]Пробовала - нельзя, даже если очень нужно. Ведь в св-во Filter переменную не запихнешь.
← →
AlexSV (2002-06-14 10:51) [4]> VAleksey ©
Можно.
Вот только реализация будет зависеть от конкретной задачи.
Решение в лоб:
type
TFilterForm = class(TForm)
...
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
procedure OnNewFilterRecord(DataSet: TDataSet; var Accept: Boolean);
...
end;
var
OnOldOnFilterRecord : TFilterRecordEvent;
procedure TFilterForm.FormShow(Sender: TObject);
begin
//привязываем свой фильтр
OnOldOnFilterRecord := Query1.OnFilterRecord;
Query1.OnFilterRecord := OnNewFilterRecord;
end;
procedure TFilterForm.OnNewFilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
if Assigned(OnOldOnFilterRecord) then
OnOldOnFilterRecord(DataSet, Accept);
if Accept then begin
// Здесь фильтруешь что надо
end;
end;
procedure TRLightSeek.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// подчищаем после себя
Query1.OnFilterRecord := OnOldOnFilterRecord;
end;
При этом надо учесть, что в данный момент никто больше с твоим
Query не работает, а то ...
← →
AlexSV (2002-06-14 10:54) [5]Пардон, опечатался
procedure TRLightSeek.FormClose(Sender: TObject; var Action: TCloseAction);
естественно
procedure TFilterForm.FormClose(Sender: TObject; var Action: TCloseAction);
резал из разных юнитов.
← →
Val (2002-06-14 11:15) [6]>VAleksey © (14.06.02 09:47)
странный несколько вопрос-от меня суть несколько ускользает, похоже - ведь наложение еще одного фильтра, без снимания старого - это динамическое добавление к существующему фильтру дополнительных условий, но в любом случае, это его переопределение?
← →
VAleksey (2002-06-14 12:36) [7]
> Val © (14.06.02 11:15)
Щас только с футбола (- , но это лирика.
И да и нет.
1-й фильтр по одному условию, а 2-й по другому, а 3-й по третьему, а в одну процедуру их не запихаешь т.к. много проверок надо. Вот так вот.
← →
roottim (2002-06-14 14:28) [8]никак!
только select from select...
← →
vuk (2002-06-14 15:19) [9]В BDE, помнится, фильтры были каскадные и могли накладываться друг на друга...
← →
Lord Warlock (2002-06-14 15:26) [10]Я например делал динамическое формирование св-ва Filter в зависимости от выбранных чекбоксов в TCheckboxList, причем их кол-во было не постоянным. То же можно сделать и для OnFilterRecord
← →
Andy First (2002-06-14 15:40) [11]Можно в TQuery задать свойство Filter, а затем использовать SELECT. В итоге получится фильтр от выборки.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.07.08;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c