|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вопрос по фильтру ADOTable
Здравствуйте!
Код:
procedure TForma1.Edit1Change(Sender: TObject); begin if Length(Edit1.Text)>0 then DataModule1.ADOTable1.Filtered:=true else DataModule1.ADOTable1.Filtered:=false; DataModule1.ADOTable1.Filter:='f1>'''+Edit1.Text+''''; end; Хотелось бы, чтобы при изменении значения Edit1.Text, включался фильтр для ADOTable1 для поля f1. Т.е. чтобы в DBGrid попадали записи, в которых поле f1 начинается с текста в Edit1. При этом по мере набора текста в Edit1 отфильтровывалось ненужное. Указанная процедура компилится, но результата нет - ненужное не отбрасывается. Помогите пожалуйста! Последний раз редактировалось Admin, 07.09.2011 в 15:14. |
#2
|
||||
|
||||
Так попробуйте:
Код:
DataModule1.ADOTable1.Filter:='f1 like ''%'+Edit1.Text+'%'''; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Попробовал и в ответ вижу сообщение:
"Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом". |
#4
|
||||
|
||||
f1 у вас строковое?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
||||
|
||||
Ну а так?
Код:
procedure TForma1.Edit1Change(Sender: TObject); begin if Edit1.Text = '' then Exit; DataModule1.AdoTable1.Filter := Format('[f1] like ''%%%s%%''',[Edit1.Text]); DataModule1.AdoTable1.Filtered := True; end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
спасибо, так работает, но выводит все строки с включением подстроки, а мне нужно только те, которые сначала. Как поправить?
|
#7
|
|||
|
|||
Код:
if Edit1.Text = '' then Exit; DataModule1.AdoTable1.Filter := Format('[f1] like '+#39+'%s%%'+#39, [Edit1.Text]); DataModule1.AdoTable1.Filtered := True; Вот так работает! Спасибо за помощь! Последний раз редактировалось lmikle, 07.09.2011 в 22:57. |
#8
|
||||
|
||||
Попробуй использовать ADOQuery. Средствами SQL это очень легко реализовать используя примерно такую конструкцию
Код:
'select * from <table> where <поле>='+Edit1.text |
#9
|
|||
|
|||
спасибо, попробую
|