Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: СУБД и Delphi/Lazarus

  Все выпуски  

RusFAQ.ru: СУБД и Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / СУБД и Delphi

Выпуск № 331
от 26.05.2007, 21:35

Администратор:Gh0stik
В рассылке:Подписчиков: 331, Экспертов: 41
В номере:Вопросов: 1, Ответов: 2


Вопрос № 87959: Здравствуйте уважаемые эксперты!!! Вы не могли бы подсказать как осуществить поиск по базе данных в Delphi, после ввода каждой буквы, что бы сортировка шла, а не сразу по целому слову, через компонент TQuery, ну или если можно через другой компон...

Вопрос № 87.959
Здравствуйте уважаемые эксперты!!!
Вы не могли бы подсказать как осуществить поиск по базе данных в Delphi, после ввода каждой буквы, что бы сортировка шла, а не сразу по целому слову, через компонент TQuery, ну или если можно через другой компонент, то через другой.....
Заранее спасибо...
Отправлен: 21.05.2007, 21:07
Вопрос задал: Линецкий (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Виктор Пырлик
Здравствуйте, Линецкий!
Это можно реализовать в событии визуального компонента (любого) OnKeyDown
В методе реализовать вызов процедуры любого компанента доступа к данным TTable, TQuery, TADOTable TIBTable и даже процедур – у них у всех есть метод Locate.

TQuery1.Locate('pole1', Edit1.Text, [loCaseInsensitive, loPartialKey]);

Второй вариант:
Пишем типа такого:

Query1.DisableControls;
Query.Active := false;
Query1.SQ.Clear;
Query1.SQL.Add(Format(‘SELECT * FROM MYTABLE WHERE POLE1 LIKE ‘%s%’,[Edit1.Text]));
Query.Active := true;
Query1. EnableControls;
Надо понимать, что это сильно нагружает транспортный поток м/у клиентом и базой, да и сам сервер тоже.


---------
Надо пребывать господа, пребывать! Иначе ничего не получится!
Ответ отправил: Виктор Пырлик (статус: 3-ий класс)
Ответ отправлен: 21.05.2007, 22:26

Отвечает: Химяк Виктор Васильевич
Здравствуйте, Линецкий!
Можно также использовать событие OnChange, ниже кусок работающего кода.
Лучше, на мой взгляд использовать 1 вариант, т.е. функцию Locate, но все зависит от задачи.
procedure TfmMain.Edit3Change(Sender: TObject);
begin

if edit3.Text<>'' then
begin
Table1.IndexName:='';
if length (edit3.Text)=5 then
begin
if not tTable1.Locate('nomerab', edit3.Text,
[loCaseInsensitive, loPartialKey])
then showmessage('search not found');
end;
end;
end;
Ответ отправил: Химяк Виктор Васильевич (статус: 5-ый класс)
Ответ отправлен: 22.05.2007, 01:05


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.52 от 02.05.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное