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

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

Помогите разобраться с фильтром на Odac [D6, Oracle]


Андрусь ©   (2002-09-19 16:56:00) 

Привет всем! Нужно наложить фильтр на DataSet,чтобы фильтровать все записи,начинающиеся с апострафа.Если через BDE,то фильтр легко пишется:Filter:=FieldName+"=""*". Но если к базе коннект идёт через Odac,то у меня возникли трудности с написанием этого фильтра. Может кто сталкивался с подобной проблемой. Зараннее всем большое спасибо.


Андрусь   (2002-09-23 13:55:00) [1]

Я понимаю,но..


Леха_   (2002-09-23 12:04:00) [2]

по возможности используй не фильтр а соответствующий SQL запрос


Андрусь   (2002-09-23 11:16:00) [3]

>roottim
См. постановку задачи. Нужна быстрая обработка в мозгах.


roottim   (2002-09-20 13:43:00) [4]

используй FilterSQL... работает с where запроса, фильтрует сервер а не датасет
смотрел Filter, чет и правда баг есть... фильтрует если пробежаться по датасету... проверял на 3.3, на 3.6 незнаю, лень!


Андрусь   (2002-09-20 12:46:00) [5]

>Johnmen
Скорость важна! Всё-таки чего он отрабатывает часто.
>roottim
Честно,говорю - ничего лишнего руками не трогаю. Простейшее приложение - форма,панель,едит,кнопка,грид,сейсия,квери,датасорс.
По клику на кнопку снимаю строку с едита в фильтр,который фильтеред тру. Нет это там. 2 символа - #39,#34 - не проходят.


roottim   (2002-09-20 10:52:00) [6]

FilterSQL
а вообще Filter унаследован.. и никаких изменений непретерпел, что-то видимо коряво... либо вы, либо одак


Johnmen   (2002-09-20 10:49:00) [7]

Не надо переживать :-)))
При использовании OnFilterRecord вместо прямого Filter скорость, если и уменьшится, то весьма незначительно...


Андрусь   (2002-09-20 10:40:00) [8]

>dimis
Нет там Like в лексемах для фильтра.
>ЮЮ
Но почему так часто отрабатывает.


ЮЮ   (2002-09-20 09:19:00) [9]

>Не подскажите чего событие OnFilterRecord в Odac срабатывает не только для отфильтрованных записей.

Наверное,потому что именно обработчик OnFilterRecord и определяет, будет ли отфильтрована эта запись или нет. А Filter отдыхает. Изучай исходники компонент.


dimis   (2002-09-20 08:38:00) [10]


> Андрусь ©

я пытаюсь сказать что в оракле применяется не *, а %
попробуй как я сказал ранее
"LIKE """"||%"


Андрусь   (2002-09-19 19:31:00) [11]

>Johnmen ©
Не подскажите чего событие OnFilterRecord в Odac срабатывает не только для отфильтрованных записей.


Леха_   (2002-09-19 18:26:00) [12]

а LIKE из SQL уже убрали?
95% что сервер отфильтрует быстрее клиента тем более что когда условие по началу строки индексы вполне работают


Андрусь   (2002-09-19 18:04:00) [13]

>dimis
Я хочу отфильтровать записи,начинающиеся с апострофа. Фильтр ставлю на клиенте. Причём если через БДЕ работаю,то пишу Filter:=FieldName"=""""*"""; и работает,а через Odac нет.
>Johnmen ©
Пишу такую штуку вроде поисковика - по введённым клавишам фильтрую DataSet. Для меня важна скорость. Вряд ли я напишу поисковик более быстрый чем написанный людьми. Так что проще попарится,найти комбинацию символов,на которые необх. менять апостроф.Тем более остальное уже работает.


Johnmen   (2002-09-19 17:44:00) [14]

А может быть не париться и обрабатывать OnFilterRecord ?


dimis   (2002-09-19 17:31:00) [15]

какие трудности?
подробней
ODAC возможно не использует LocaSql
попробуй как в oracle
FieldName+ "LIKE "||%"


Наверх

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