В таком виде вообще должна получать ошибку при переоткрытии запроса (нет пробела после 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 что-то-там-извне).