![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтрация НД [D5, IB6.x]
Johnmen © (2002-01-31 12:24:00)Такой вот глюк при работе с IBDataSet : ставлю фильтр Filtered:=True; Filter:=<....>; и ничего не происходит ! Это я глючу или IBDataSet ? Кто сталкивался - отзовитесь !!!
}{unter (2002-02-01 18:14:00) [1]>>Johnmen
Сорри ! Я подозреваю, что могу чего-то и не знать !
Извини !
Johnmen (2002-02-01 16:32:00) [2]>}{unter © : я тебя понял, но пременительно к IB через BDE
1. последовательность Filtered Filter не важна
2. фильтрация НД работает исключитель быстро, независимо от индексов
}{unter (2002-02-01 15:33:00) [3]>>Johnmen
Почему именно так могу объяснить. При работе с Filter не используются индексы. Если файл большой в длинну работа с Filter разительно отличается от работы с SetRange.
Да я писал и знал, что не в тему просто обратил анимание на постановку вопроса особенно на алгоритм
Filtered := True;
Filter := "<>";
это меня и смутило. Я провёл анологию (если не понял) с таблицами Paradox по применению фильтра если он назначается позже, чем даётся указание на его применение.
И менно по аналогии я заподозрил, что у автора топика именно в этом проблема. Конечно же я не в курске приминима эта шняга к интербейсу или нет, я с ним не работал.
Mikhail (2002-02-01 14:41:00) [4]>>Alexandr Спасибо
Fareader (2002-02-01 14:40:00) [5]2Alexandr. Так и так с ним работаю. Только гнилыми помидорами и тухлыми яйцами не кидаться и больно не бить за качество кода. Там комментариев нету ;)
Alexandr (2002-02-01 14:22:00) [6]давай. В понедельник посмотрю.
Кстати проект делай под Delphi5.
Fareader (2002-02-01 14:18:00) [7]Ок. зашлю. Только базу надо порезать, а то бекап на 100 мб не пролезет
Johnmen (2002-02-01 14:05:00) [8]>}{unter © : кто сказал, что не создан ?!
извини, но ты слегка не в тему...посмотри предыдущий диалог :)
А фильтры в BDE работают исключительно быстро
...И ещё по аналогии с BDE средства хуже Filter просто не существует!...
Не надо быть таким категоричным !!!!
Alexandr (2002-02-01 14:02:00) [9]во-во.
Короче так.
2fareader: Пиши тестовый проект, где у тебя тормозит, что бы в нем все было, и было понятно!!! И зашли мне по мылу. База если большая, то шли не всю, а только то, что надо. Я там посмотрю чего ты понаписал... Delphi 5, база в GBK-в бакупе и сожми Zip.
Johnmen (2002-02-01 13:56:00) [10]К слову :
Посмотрел старые проги (с использованием BDE) :
на 1000 записей НД поиск типа <найти вхождение>[pos(substr,str)]
работает прибл. 1 сек. на P-100 c 48MB !!!!!!
Alexandr (2002-02-01 13:56:00) [11]1) SetRange только для файловых баз данных.
2) А может фильтр проще на сервере делать в запросе в условии where
3) У меня примерно такие-же компы, и скорость нормальная
4) а detail у этого DataSet нету?
}{unter (2002-02-01 13:49:00) [12]Не знаю по аналогии с BDE сначала назначается фильтр, а потом применяется т.е.
Filter :=".....";
Filtered := True
как может, что-то произойти если к моменту запуска фильтра он не задан ?
И ещё по аналогии с BDE средства хуже Filter просто не существует! Медленнее средства просто нет если только не самому пробегать в цикле по рекордам скидывая маркеры в какой нибудь стринг лист.
SetRange - хорошая альтернатива фильтру !
Fareader (2002-02-01 13:48:00) [13]433 Celeron 32 RAM Win 98
у меня 800 Celeron 256 RAM Win 2000
в install.txt написано WELCOME TO DEVRACE FIBPLUS 4.5
Alexandr (2002-02-01 13:39:00) [14]200 записей и locate долго проходит после fetchall?
странно... У них что-за компьютеры?
А версия FIBPlus 4.4.12? Или более старая? Они там улучшали работу с памятью.
у меня вообще pos(substr,str) часто вместо locate применяется и то скорость нормальная.
Fareader (2002-02-01 13:34:00) [15]Я думаю, что НД в 100-200 записей - это не так уж много, к тому же вариантов нет - они нужны все.
Johnmen (2002-02-01 13:31:00) [16]>Fareader © : м.б. изменить идеологию - напр. не работать с большими НД ?
Fareader (2002-02-01 13:27:00) [17]VER 4.5
FetchAll - помог, но локейт даже после FetchAll - отрабатывает дольше фильтра, приходится накладывать фильтр, а потом снимать. Но даже так скорость локейт у BDE - выше. В общем терпимо, но юзера ропщут - дескать на старой версии проги - быстрее было :(
Alexandr (2002-02-01 12:54:00) [18]должно быть одинаково.
Для корректной проверки перед наложением фильтра сделай fetchAll.
А какая у тебя версия FIBPlus?
Fareader (2002-02-01 11:27:00) [19]2 Alexandr
Туговато фильтры работают, не в пример BDE, есть идеи по повышению скорости их работы?
Alexandr (2002-02-01 07:08:00) [20]2Mikhail: fibplus.com.ua