![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в табличке по неполному слову по нескольким полям [D5, IB5.x]
Alexsys © (2002-07-25 21:43:00)Народ, помогите. Что-то я не врубаюсь.
У меня в программке показываются записи в Gride. Хочу добавить окошко, где можно ввести какие-то поля, или части полей. Например кусок наименования предприятия и еще что-то. А потом указатель в Gride должен передвинуться на эту запись.
Вот это-то я и не могу соорудить...
Alexsys (2002-07-28 12:48:00) [1]Все понял. Спасибо. Буду делать второй запрос. Наверное, так выйдет попроще. Сканировать не прокатит - база здоровенная...
Anatoly Podgoretsky (2002-07-27 12:39:00) [2]Оба варианта позволят организовать и инкрементальный поиск, что не обеспечивает Locate
Anatoly Podgoretsky (2002-07-27 12:38:00) [3]Без дополнительного запроса не обойдешься, Locate работает только от начала поля.
Я бы те посоветовал делать выбор во втором запросе (используй также предикат disctinct), брать оттуда значение ключевого поля и по нему с помощью Locate позиционировать на запись в первом.
Фильтрация как я понял тебе не подходит, в шриде должны остаться все записи, нужно только перемещение.
Другой возможно не оптимальный в твоем случае вариант, это просканировать вручную весь полученный набор, на предмет нахождения нужной записи, но возможен большой тормоз.
NNH (2002-07-27 12:00:00) [4]Locate работает и по нескольким полям. Нужно их указать через запятую (и поля таблицы, и поля ввода данных), а потом воспользоваться VarArray. То есть использовать массивы с подключением модуля Дельфи
Alexsys (2002-07-26 20:06:00) [5]Спасибо, натолкнули на мысль. В своем случае управлюсь.
А вот дальше опять не врубаюсь.Например, надо найти
человека по неполному адресу и неполной фамилии одновременно.
Поля ессно разные. Адрес из нескольких полей. Неужели только фильтр?
А кода пока как такового еще нет. Куски в голове и на бумаге.
Использую Query.
Заранее спасибо, если кто подскажет...
Johnmen (2002-07-26 12:44:00) [6]>kalliopiy ©
Что-то я сегодня глючу не по-детски :( И путаю слова :(
(Конечно все работает...)
Mike Kouzmine (2002-07-26 12:40:00) [7]Причем, если таблица большая и нет индекса, то имеет смысл поставить на евент нажатия клавиши Timer.Enable чтобы давалась пауза между нажатием клавиши и запуском фильтра или лукапа
kalliopiy (2002-07-26 12:35:00) [8]
> Johnmen ©
Да хотя бы для TTable.
А на счет куска кода - это ж надо какую-то конкретику иметь. Какую-нибудь БД, таблицу и т.д. Я только не пойму, что тебя смущает...
Johnmen (2002-07-26 12:17:00) [9]>kalliopiy © (26.07.02 12:08)
Уточни, для каких компонент доступа и приведи кусок кода.
Очень интересно :)
kalliopiy (2002-07-26 12:08:00) [10]
> Johnmen ©
Что значит нереализовано? Все отлично работает. И уже давно.
Johnmen (2002-07-26 12:02:00) [11]>kalliopiy © (26.07.02 11:54)
>[loPartialKey],
Нереализовано...
kalliopiy (2002-07-26 11:54:00) [12]
> Johnmen © (26.07.02 09:52)
> У DataSet есть метод Locate (для точного соответствия шаблона
> поиска)...:)
> Для частичного - сканирование НД или целенаправленный запрос.
Использовать надо тот же самый Locate, но только у него в третьем параметре (опции поиска) необходимо указать [loPartialKey], т.е. возможность частичного совпадения. По-моему, как раз то, что нужно Alexsys.
SuperVK (2002-07-26 11:46:00) [13]Я бы поигрался со свойством Filter у таблицы или запроса, на который ссылается Grid. Он даёт возможность использовать даже какой-то язык запросов.
Можно ещё генерировать SQL-запрос.
Johnmen (2002-07-26 09:52:00) [14]У DataSet есть метод Locate (для точного соответствия шаблона поиска)...:)
Для частичного - сканирование НД или целенаправленный запрос.