Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.021 c
2-1158161042
santey
2006-09-13 19:24
2006.10.01
Вмасто имени программы в заголовке ????????


2-1158081126
Furyz
2006-09-12 21:12
2006.10.01
Too many reosuce to handle


1-1156172149
Fay
2006-08-21 18:55
2006.10.01
THintWindow.CalcHintRect


2-1158069501
A1ex
2006-09-12 17:58
2006.10.01
Как подключиться к базе...


15-1157688089
num
2006-09-08 08:01
2006.10.01
Логин и пароль





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский