![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Тормоза после нескольких фильтраций [D6, Paradox]
Twix © (2003-01-09 08:27:00)Возникла проблема следующего характера:
Используется Delphi6 и база данных Paradox-формата. В программе есть функция поиска реализованная при помощи свойства TTable.Filter. Так вот при вызове данной функции n-ное количество раз, существенно замедляется доступ к таблице в которой осуществлялся поиск. Хочу заметить, что после выполнения поиска фильтрация снимается (TTable.Filter=""; TTable.Filtered:=false;).
Кто сталкивался с похожей проблемой? И как ее побороть?
Twix (2003-01-10 14:31:00) [1]To MsGuns:
Таких ошибок не делаем :-)
To HNN:
Спасибо, вроде бы проблема решилась открытием/зкарытием таблицы в которой проводится фильтрация. Возможно эта заморочка вызвана глюками в самом BDE.
В таблице объемом до 10000 записей все ОК, но вот при >20000 возникает такая проблема. Особенность этой таблицы в том, что на одно и тоже поле есть два индекса: по возрастанию и убыванию возможно поэтому и возникает проблема :-((
Иван Брылёв (2003-01-09 13:56:00) [2]Было такое. Если нужен сложный фильтр, то можно или обрабатывать событие OnFilterRecord или пользоваться SQL (но если не используешь ни BDE ни что-то еще, что поддерживает SQL, то тогда сложнее...)
MsGuns (2003-01-09 12:28:00) [3]При переключении фильтра надо чистить не столько Tabl1.Filter, сколько саму строковую переменную, где перечисляются все выражения фильтрации. Чтоб не получилось что-то вроде
StrFilter := "Fld1="abcd";Fld1="abcd";Fld1="abcd";Fld1="abcd"...)
Это, ессно, замедлит !
Kruger (2003-01-09 12:16:00) [4]У меня таблица из 9000 строк, я там применяю филльтрацию и все нормально. Попробуй сократить количество фильтров. Может возможно в один запрос внести сраз несколько.
Ditrix (2003-01-09 10:37:00) [5]А лишний мастер-детайл (лукап и т.п.) нигде не прицеплен?
HNN (2003-01-09 10:09:00) [6]После перезагрузки программы проблемы нет?
На мой взгляд проблема может решиться путем закрытия и открытия таблицы, а не только отмены фильтрации.