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

Вниз

LocateNext   Найти похожие ветки 

 
Александр ©   (2004-02-16 15:12) [0]

Добрый день.
Столкнулся с такой проблемой: в моей программе осуществляется поиск по неполному соответствию, так сначала находится первая запись потом следующая и т.д. до конца базы, я использую LocateNext :
dm.IBQuery1.LocateNext("snbook",trim(Edit.text), [loCaseInsensitive,loPartialKey])
но получается так, что функция находит только первую подходящюю запись, что делать что бы находились и следующие ?


 
Desdechado ©   (2004-02-16 15:18) [1]

сделать перебор в цикле с проверкой условия


 
Александр ©   (2004-02-16 15:30) [2]

Так судя по описанию функция LocateNext сама должна находить следующий элемент, а этого не происходит ?


 
Соловьев ©   (2004-02-16 16:21) [3]

Тут недавно был спор по поводу использования Locate... Так вот я предлагал, что перед тем как делать Locate лучше сначала выполнть запрос к серверу select ... from table where ...
1. Таким образом мы зря не закачиваем на клиента записи, если такой нет.
2. И это очень важно! Мы можем использовать этот запрос для нормального функциклирования LocateNext, LocatePrior. Я лично вывожу еще одно окошко с этими результатами и пользователь сам начинает выбирать нужную запись. И еще может отсортировать так как ему хочется...
А переход осуществляется по ключевому полю даблкликом по гриду с результатами.


 
Vlad ©   (2004-02-16 19:06) [4]


> Desdechado ©   (16.02.04 15:18) [1]
> сделать перебор в цикле с проверкой условия

Locate в IBX - это и так цикл с проверкой условия.

Автору: посмотри реализацию этого метода. По-моему там после LocateNext нужно обычный Next делать. Тогда должно работать


 
Deniz ©   (2004-02-17 08:43) [5]

А вызвать еще раз dm.IBQuery1.LocateNext("snbook",trim(Edit.text), [loCaseInsensitive,loPartialKey]) не меняя позиции курсора


 
Александр ©   (2004-02-17 09:49) [6]

Да, но в D6 всё работает как положено. Перетаскиваю процедуру в D5 и LocateNext работает как обычный Locate !!!?


 
Соловьев ©   (2004-02-17 10:04) [7]

2 Александр
Почему ті не хочешь попробовать [3]?


 
Vlad ©   (2004-02-17 10:06) [8]


> Александр ©   (17.02.04 09:49) [6]
> Да, но в D6 всё работает как положено

Еще раз говорю, тебе что, трудно посмотреть реализацию метода ?
В D5 и D6 она вполне может отличаться.
В D5 (я не проверял, но судя по исходному коду это так), нужно после LocateNext делать просто Next, тогда все должно заработать.


 
BlackKing ©   (2004-02-25 12:00) [9]

В fibplus4_42 на D3 такая-же лажа. приходится вызывать Next перед LocateNext, тогда работает. А LocateNext получается нужен только для проверки подходит текущая запись или нет.


 
Соловьев ©   (2004-02-25 12:04) [10]

уже есть 5.2
но все-таки советую [3]


 
BlackKing ©   (2004-02-25 12:13) [11]

[3] мне не подходит, т.к. я закачиваю набор записей состоящий из нескольких групп, а потом через Locate и LocateNext отбираю нужные на данный момент. Ето побыстрее, чем каждый раз делать запрос на сервер (тестил).


 
Deniz ©   (2004-02-25 13:10) [12]

Не знаю как ты делаешь, но у меня есть старая программа (Delphi 5 + InterBase 5.6), так вот там LocateNext отрабатывает нормально, правда в Delphi 5 IBX обновлены были, может в этом дело?



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

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

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1078405248
Silver_
2004-03-04 16:00
2004.03.28
В OnCreate Формы требуется Application.Terminate но...


1-1078913249
Creator
2004-03-10 13:07
2004.03.28
Перехват


3-1077285616
ламер2
2004-02-20 17:00
2004.03.28
Как в Парадокс программно сохранить картинку?


1-1078429446
КомофОнСамый
2004-03-04 22:44
2004.03.28
Как из TMemoryStream загрузить в TImage


3-1077879757
Ega23
2004-02-27 14:02
2004.03.28
Проверка на наличие временной таблицы