Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

фильтрация в dbf [D5, Paradox]


lety ©   (2002-07-26 22:19:00) 

Задается условие для фильтрации TTable в обработке onFilterRecord. Дальше Filtered:=true;
А дальше условие для фильтрации меняется.
Для парадоксовских таблиц я делала Table1.Refresh или
Table1.Filtered:=false;
Table1.Filtered:=true;

а для dbf (FoxPro 2.5) новая фильтрация уже не делается. Т.е. ее можно отменить, а если сделать Table1.Filtered:=true; то ни одной записи уже не показывается.
Работает только если закрыть-открыть таблицу.

Что можно сделать?


LOM153   (2002-07-27 18:20:00) [1]

А вот может кто подскажет оптимальный выход для фильтрации по LookUp полям в dbf? Обычный фильтр тут не спасает, пришлось создать функцию,которая по значению поля находит значение LookUp поля (причем по новой!-при фильтрации значение лукапаов неопределимо:((() - сравнивает с нужным и возвращает ответ,который уже и используется для Accept. Но как все это долго работает! Тем паче когда у меня таблица со многими такими полями, да еще и связи 3-4 порядка.....


LOM153   (2002-07-27 18:11:00) [2]

Сталкивался я с этим:) Оптимальный выход - ставить пару строк:
Table1.Filter:=nil;
Table1.Filter:=XXXXXXX; // -нужный тебе фильтр
А иначе оно ищет по ОТФИЛЬТРОВАННЫМ записям, что тоже иногда полезно:)))))


Anatoly Podgoretsky   (2002-07-27 12:30:00) [3]

Вообще то, что то у тебя не то, что то недоговариваешь, может привести более подробный код, Refresh должен работать, дополнительно желательно сделать .First, сообственно достаточно только его или любого перемещения, может у тебя кроме onFilterRecord используется еще и .Filter

В принципе ты можешь для каждого вызова onFilterRecord применять новое правило, только спровоцируй вызов, это перемещение по таблице. А вот для .Filter могут быть особенности. Есть еще одна вещь, настройки BDE может кешируется, попробуй поставить Local Share = true

Во всяком случае за 7 лет работы я не встретил никаких проблем с onFilterRecord


NNH   (2002-07-27 11:55:00) [4]

А разве трудно написать: закрыть таблицу, присвоить фильтр, открыть таблицу?
Может и коряво, но если работает, то какая разница?


Наверх

Титульная страница Поиск, карта сайта Написать письмо