Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-23670
Dj Karies
2002-06-26 12:08
2002.07.08
Потоки(Threads) в DLL


1-23540
HellTRooper
2002-06-26 16:36
2002.07.08
RxRichedit


3-23475
Eraser
2002-06-08 00:15
2002.07.08
Как изменить формат данных в TDBEdit


1-23609
Zamiran
2002-06-25 15:13
2002.07.08
Пример пожалуйста!!!!


1-23569
Locked
2002-06-27 07:04
2002.07.08
ППодскажите п-ста!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский