|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Почему не работает?
Почему этот код не работает?
Код:
procedure TForm.ADOQuery1FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept:=(DataSet['Date'] > DataSet['EndDate']); end; |
#2
|
|||
|
|||
Код:
ADOQuery1.Filtered := True; |
#3
|
|||
|
|||
Далаю. Не фильтрует по этому условию все равно.
|
#4
|
|||
|
|||
а ADOQuery1.Filter пустой?
|
#5
|
|||
|
|||
нет не пустой
Код:
Filter:='Key='+FKey.AsString + ' AND UserKey='+IntToStr(CurrentUserKey)+ ' AND UserMess<>'+IntToStr(CurrentUserKey); Filtered:=True; Видно даты как то не так надо фильтровать ( |
#6
|
|||
|
|||
Может условие в Filter не возвращает записи и обработчик не дергается. Что значит не работает? не выполняется, выдает ошибку?
|
#7
|
|||
|
|||
Должен фильтрануть и оставить пусто. Фильтр отрабатывает, а по датам не фильтрует как раз. Что с ним что без него...
|
#8
|
|||
|
|||
Оказывается, друзья, он фильтрует нормально.
Просто неправильно работает в D7 ADOQuery.RecordCount на фильтрацию в событии OnFilterRecord. Выдает мне только то что отфильтровал основным фильром в Filter, а что отфильтровано в событии OnFilterRecord он не считает... К а к ж е т а к ? ? Может знаете как заставить его считать правильно? |
#9
|
||||
|
||||
А почему фильтр нельзя прямо в запрос прописывать доп условием выборки?
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#11
|
||||
|
||||
Больше нечего сказать. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#12
|
||||
|
||||
Цитата:
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#13
|
|||
|
|||
Спасибо за иронию. Картинка понравилась.
Отдельный запрос для подсчета не самый оптимальный способ достижения результата. Я выяснил что он все же правильно фильтрует. Просто неправильно считался RecordCount. Это и привило к подозрениям на неправильную работу фильтра. В интернете выяснил что это распространенная проблема при использовании события FilterRecord у ADO. Поэтому было решено подсчет вести вручную. Придумал вот как: Last; RecNo; Тем самым он выдал верный результат и правильно подсчитал. Тема закрыта. Спасибо за помощь. Последний раз редактировалось aqula, 02.10.2016 в 09:26. |