Главная страница
    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
1-48158
DeMoN-777
2002-08-01 12:36
2002.08.15
Как обработать событие OnKeyPress у TWebBrowser ?


1-48194
Fissher
2002-08-02 20:36
2002.08.15
Снова я со своим курсором


6-48244
T2
2002-05-31 09:45
2002.08.15
Подключение к I-Net


1-48164
Lega
2002-07-30 10:49
2002.08.15
Документ Word, как открыть?


1-48162
maxim2
2002-08-01 13:13
2002.08.15
Как перевести секунды в формате 34545 в формат 00:00:00





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский