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