Форум: "Базы";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.013 c