Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

DataSet.Locate не дружит с Filter, а надо - как быть   Найти похожие ветки 

 
Johnmen ©   (2006-07-26 16:25) [40]

[39]

> из теста видно что Locate ищет во всем DataSet-е -- а не
> должен.


[15]

> у меня на строчке if... ошибку выдает до "нашел" / "не нашел" и не доходит


Как Вас понимать, сэр?


 
Silver... ©   (2006-07-26 16:40) [41]

интересно чего не понятного

Тест - тот что я сделал отдельно в [12]

вот объясните ...

ADODataSet1...
ID   A
--------
1  aaa
2  bbb
3  ccc
4  aaa
5  bbb


фильтрируем:
ADODataSet1.Filter := "ID > 3";
ADODataSet.Filtered := True;


получаем:
ADODataSet1...
ID   A
--------
4  aaa
5  bbb


ишем:
ADODataSet1.Locate("A", "BB", [loCaseInsensitive, loPartialKey]);
ShowMessage("ID = " + VarToStr(ADODataSet1.FieldByName("ID").Value));


понятное дело не находит и курсор остается на первой записи

как получить ID = 5 --- не даст ведь :( в этом то и вся проблемма


 
Johnmen ©   (2006-07-26 17:35) [42]


> понятное дело не находит и курсор остается на первой записи


Должна находить. Даже в отфильтрованном.
Ошибка закомуфлирована. Она не здесь...


 
sniknik ©   (2006-07-26 18:18) [43]

Johnmen ©   (26.07.06 17:35) [42]
> Должна находить. Даже в отфильтрованном.
> Ошибка закомуфлирована. Она не здесь...
она и находит, даже в отфильтрованном...

интересно долго еще будет рассусоливание одного и тогоже?... когда ктонибудь реализацию ADODB.LocateRecord посмотрит? еще в [14] предлагал... элементарно ведь.
Johnmen тебе то это просто посмотреть надо, сразу понятно...


 
Silver... ©   (2006-07-26 18:36) [44]

смотрю и вижу...

FLookupCursor.Filter := "";

 одно не могу понять кто именно разработчикам VCL сказал убирать фильтр перед поиском или мож проблемы дает?

 Теперь чего генофонд править?


 
sniknik ©   (2006-07-26 20:29) [45]

> но не могу понять кто именно разработчикам VCL сказал убирать фильтр перед поиском
это не убирание, это скорее гарантия, однотипного поведения (чтоб предыдущие поиски не наложились...) а изначально там и так пусто, неважно есть у тебя фильтр или нет.

и поведения вероятно специально запрограммированого... логика скорее всего такая - locate должен показывать есть ли искомая запись в рекордсете, и ведь показывает же! а от установки фильтра физически данные из рекордсета не исчазают... просто фильтруется вывод на показ. и что теперь должен искать locate? толко среди выводимых на показ? но ведь locate это метод рекордсета (который неизменился) а не какогото дополнительного обьекта "отфильтрованные для отображения записи".
т.е. с этой точки зрения все правильно (хотя х.з. что там на самом деле в головах разработчикой присходило...)
есть и другое соображение, если сделать "по Silver-овски" то потеряем возможность поиска вне фильтра (узнать есть ли вообще запись) при установленном, а вот если так как есть то желаемый поик только в отфильтрованном легко осуществить и другими методами... в ADO на locate свет клином не сошолся.

> Теперь чего генофонд править?
ну попробуй. ;)

но вообще, советы, что делать, тоже в [14] были. + упоминавшийся поиск другими методами, да и locate поправить элементарно главное не в генофонде, а к себе модуль скопировать.


 
Anatoly Podgoretsky ©   (2006-07-26 20:37) [46]

StriderMan ©   (26.07.06 14:14) [22]
Это не фильтр, а новый запрос к серверу.


 
Silver... ©   (2006-07-26 21:09) [47]


> в ADO на locate свет клином не сошолся.

согласен тока веди в DBGridEh Locate-ом рялизованно теперь мне либо там либо сям менять надо. а вообше разработчикам совет бы переслать вшить в генофонд [loFullDataSet] - было бы красивше


 
Silver... ©   (2006-07-26 21:14) [48]


> в ADO на locate свет клином не сошолся.

согласен тока веди в DBGridEh Locate-ом рялизованно теперь мне либо там либо сям менять надо. а вообше разработчикам совет бы переслать вшить в генофонд типа [loFullDataSet/loFilteredDataSet] - было бы красивше


 
Johnmen ©   (2006-07-27 10:29) [49]

>sniknik ©   (26.07.06 18:18) [43]
>Johnmen тебе то это просто посмотреть надо, сразу понятно...

Да, мне сразу понятно, что находит даже в отфильтрованном. Что и подтверждается быстро накиданным мною примерчиком...
Так что
> Должна находить. Даже в отфильтрованном.
> Ошибка закомуфлирована. Она не здесь...
По-прежнему актуально.



Страницы: 1 2 вся ветка

Текущий архив: 2006.10.01;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.03 c
2-1157737568
redlord
2006-09-08 21:46
2006.10.01
точки принадлежащие прямой


15-1157808081
ferr
2006-09-09 17:21
2006.10.01
Java


2-1158076753
Василий
2006-09-12 19:59
2006.10.01
DBGide


2-1157719417
arhis
2006-09-08 16:43
2006.10.01
Автоматическое закрыте формы


3-1154175894
Тфьу
2006-07-29 16:24
2006.10.01
Посоветуйте компонент