Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Последовательный поиск в БД

5.2K
05 февраля 2007 года
SerMax
96 / / 04.11.2006
Привет ! Вопросы идут потоком :) :

Хочу сделать поиск по БД. Через Locate неполучается, т.к. я не могу
сделать последовательный поиск. Для последовательного поиска вроде
поможет Seek, но его нельзя использщовать с AdoQuery.
Вообще я изначалньо открывал базы через AdoTable. Потом, как
понадобились запросы, понял ,что лучше через AdoQuery делать. Знаю,
что есть другие компоненты ADO для работы, но я не знаю, в чём их принципиальная разница.
Поиск желательно сделать неточныЙ, т.е. по вхождению в слово/предложение
9.5K
05 февраля 2007 года
Borgir
97 / / 20.12.2006
Я чесно говоря не совсем понял что значит "последовательный поиск". Но поиск по вхождению (то есть по частичному совпадению), вполне осуществим и с помощью Locate. Просто задай в качестве одного из параметров поиска loPartialKey.
5.2K
05 февраля 2007 года
SerMax
96 / / 04.11.2006
В том то и дело,что Locate находит толко первую попавшуюся запись. А я, может, хочу перебором найти свою.
Т.е. если есть 2 записи
2
22

то при поиске "2" надётся только первая запись. Надо, чтобы при повторном нажати на кнопку (эту или другую), находилась следующая запись, удовлетворяющая изначальным условиям
309
06 февраля 2007 года
el scorpio
1.1K / / 19.09.2006
Если требуется найти несколько записей, соответствующих указанному критерию, то сам Бог велел использовать SQL.
Берём ADOQuery. Формируем запрос с параметрами. Получаем требуемый набор данных и прогоняем его от первой до последней строки.
302
06 февраля 2007 года
Sagittarius
648 / / 12.04.2003
Последовательный поиск можно заменить, гм... фильтром. :)
Т.е. просто фильтруешь все записи по нужному значению, например так:
 
Код:
AOOQuery.Filter := 'Field1 LIKE ''%' + SomeFilterValue + '%''';
ADOQuery.Filtered := True;
5.2K
06 февраля 2007 года
SerMax
96 / / 04.11.2006
хм....
эти все примеры дают мне отдельный набор записей.
А я хочу, чтобы в текущем наборе был переход от одной записи к другой.
Т.е. все записи на месте, а переход только между темИ ,которые нужны (как поиск в Excel'е, к примеру).
А то если использовать SQL или фильтр, то создаётся отдельный набор данных. А это не нужно...
Или можно как-то из нового набора узнать положение записи в текущем ?
9.5K
06 февраля 2007 года
Borgir
97 / / 20.12.2006
В обоих случаях (и при использовании SQL и тем более при использовании фильтра) связь с исходными данными не теряется. Ты можешь спокойно редактировать или делать что-то еще с этими данными, и все это перенесется и на исходные данные. Особенно при использовании фильтра, тут вообще у тебя отдельный набор данных не создается, просто показываются не все записи таблицы.
302
06 февраля 2007 года
Sagittarius
648 / / 12.04.2003
Цитата: SerMax
хм....
эти все примеры дают мне отдельный набор записей.
А я хочу, чтобы в текущем наборе был переход от одной записи к другой.
Т.е. все записи на месте, а переход только между темИ ,которые нужны (как поиск в Excel'е, к примеру).
А то если использовать SQL или фильтр, то создаётся отдельный набор данных. А это не нужно...
Или можно как-то из нового набора узнать положение записи в текущем ?


Тогда реализуй поиск вручную. С проходом по каждой записи, начиная с n-ой, и проверкой условия поиска.

5.2K
06 февраля 2007 года
SerMax
96 / / 04.11.2006
Цитата: Sagittarius
Тогда реализуй поиск вручную. С проходом по каждой записи, начиная с n-ой, и проверкой условия поиска.



Ну вот, видимо, придётся...

25K
02 марта 2007 года
tvrty
9 / / 02.03.2007
Не, для скорости - это не решение.
Можно, (если можно :)) заиспользовать функцию, Lookup для любого TDataSet, а потом последовательно переходить по результатам с помощью Locate.
Можно (криво, но стопудово) выбрать другим запросом ключи к записям, которые ты собираешся искать, а потом опять же переходить с помошью Locate по результатам.
Next - это ну очень плохой вариант.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог