Показать сообщение отдельно
  #14  
Старый 17.04.2008, 02:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

В таком виде вообще должна получать ошибку при переоткрытии запроса (нет пробела после LIKE в строковой константе).
С другой стороны выбранный метот не самый лучший, т.к. требует много времени при большом кол-ве записей в таблице.

Если хочешь фильтровать именно выборку, то лучше сделать так, как сделано в uTorrent.

Бросаешь TEdit куда-нибудь. В нем в OnKeyPress:
Код:
const
  CSQL = 'SELECT DISTINCT Fio FROM kartabolnih.db'#13#10+
             'WHERE Fio LIKE ''%s'''#13#10+
             'ORDER BY Fio';
begin

If Key = #13 Then
  Begin
    Query.Close;
    Query.SQL.Clear;
    Query.SQL.Add(Format(CSQL,['%'+Edit1.Text+'%']));
    Query.Open;
  End;
end;
Admin: Не забываем про оформление кода!

Т.е. получаем, что пользлватель вводит строку поиска, жмет Enter и получает отфильтрованную выборку. Далее можно поиграться с различными переключателями типа "начинается с" и т.д.

Еще один момент. Почитай как отрабатывается LIKE на твоей БД - с учетом регистра или нет (зависит от самой БД). Тогда, возможно надо будет обернуть LIKE в UPPER (для Oracla - WHERE UPPER(FIO) LIKE что-то-там-извне).
Ответить с цитированием