Форум: "Начинающим";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];
ВнизКак организовать поиск "Найти далее"? Найти похожие ветки
← →
Сергей (2008-10-09 18:52) [0]Использую QueADOQuery2.Locate (ColFind,trim(Edit1.Text),[loCaseInsensitive, loPartialKey]). Ищет только первое вхождение строки. Как искать следующие вхождения? Спасибо.
← →
clickmaker © (2008-10-09 18:56) [1]перебором
← →
Ega23 © (2008-10-09 18:59) [2]
> Как искать следующие вхождения?
Только перебором, по-другому никак. Собственно, и Locate перебором работает.
← →
Сергей (2008-10-09 19:10) [3]Как это сделать? Как заставить Locate искать от первого вхождения до второго.
Нашел первую запись например 111111 затем вторую 11111 и так далее
← →
Правильный$Вася (2008-10-09 19:10) [4]
> Собственно, и Locate перебором работает.
в данном конкретном - да
в вообще-то - нет, при наличии индексов он их использует
← →
Правильный$Вася (2008-10-09 19:11) [5]
> Как заставить Locate искать от первого вхождения до второго.
это невозможно
тебе же сказали - перебором
это значит query.Next пока не совпало
← →
Сергей (2008-10-09 19:20) [6]Почему же тогда курсор остается на той же записи?
← →
Palladin © (2008-10-09 19:22) [7]потому что на другую он не переходит
← →
Anatoly Podgoretsky © (2008-10-09 19:26) [8]
> Почему же тогда курсор остается на той же записи?
Наверно у тебя ошибка в программе?
← →
Сергей (2008-10-09 19:36) [9]Перевожу курсор на другую запись. После поиска Locate переходит на туже запись.
procedure TForm3.DBGrid1TitleClick(Column: TColumn);
begin
if flagLok then ADOQuery2.Next;
ColFind:= trim(Column.FieldName);
if not ADOQuery2.Locate (ColFind,trim(Edit1.Text),[loCaseInsensitive, loPartialKey]) then
ShowMessage(Edit1.Text + " not found in " + ColFind)
else
begin
flagLok:=true
end;
end;
← →
Ega23 © (2008-10-09 19:55) [10]
> После поиска Locate переходит на туже запись.
TDataSet.Locate + F1
← →
Anatoly Podgoretsky © (2008-10-09 20:01) [11]
> Сергей (09.10.08 19:36) [9]
Ну так и есть - и где же тут перебор?
← →
MsGuns © (2008-10-09 20:41) [12]http://delphimaster.net/view/2-1222845582/
← →
Правильный$Вася (2008-10-09 20:42) [13]
> Перевожу курсор на другую запись. После поиска Locate переходит
> на туже запись.
Locate всегда ищет сначала, где бы у тебя не стоял до этого указатель
еще раз - перебор, в цикле, пока не найдешь или пока не конец набора данных
← →
Anatoly Podgoretsky © (2008-10-09 20:54) [14]> Правильный$Вася (09.10.2008 20:42:13) [13]
Для сортированого по полю - пока равно
← →
ПРавильный$Вася (2008-10-09 20:59) [15]
> Anatoly Podgoretsky © (09.10.08 20:54) [14]
это на полное совпадение или на начало строки
а на вхождение, как хочет автор, - до упора
← →
sniknik © (2008-10-09 21:40) [16]> QueADOQuery2
ADO (датасет) поддерживает FindFirst/FindNext/...
которые кстати работают не перебором, а фильтром... поэтому возможны казусы, при активном локальном индексе, может найти сначала последнюю отображаемую запись а после первую (т.е. индекс при поиске не учитывается).
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.11.23;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.006 c