Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-48269
Vladimir ;)
2002-07-21 02:29
2002.08.15
Помогите с делом!


7-48335
xAlex
2002-06-03 12:22
2002.08.15
Простой вопрос по реестру (+)


1-48080
evgeg
2002-08-04 11:05
2002.08.15
Проблема с Notification


3-47929
satin
2002-07-25 12:32
2002.08.15
ADO. Некритичная но непонятная ошибка.


3-47921
SergSerg
2002-07-25 10:10
2002.08.15
dbgrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский