![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фильтрация ADOQuery [D7, MSSQL]
remlin © (2007-05-18 19:02:00)Здравствуйте.
В программе использую ADOQuery. Необходимо отсортировать данные в возращенном наборе.
Пишу:
ADOQuery.Filter := 'Pole = 'Арм*'';
ADOQuery.Filtered := true;
но хотя и есть слова например 'Арматура' в Gride нечего не тображается. Отображается только при полном совпадении слова???
А FilterOptions вообще не поддерживается.
remlin (2007-05-19 20:49:00) [1]> Savek
Спасибо! Работает!
Savek (2007-05-19 18:00:00) [2]
ADOQuery.Filter := 'Address Like ' + QuotedStr('г.Мос%');
так будет работать
Jan1 (2007-05-19 17:15:00) [3]
> что фильтрацию привязываю к событию Change компонента Edit,
>
Зачем? Пользователь должен ввести сначала, потом нажать Ентер и только потом надо слать запрос. Если у Вас курсовая то никакой сети непридумывайте.
> ADOQuery.Close;
> ADOQuery.SQL.Text := 'SELECT * From Orders WHERE Address
> LIKE ' + '''' + FilterEdit.Text + '''';
> ADOQuery.Open;
есть параметры. читали? TParameters + F1
remlin (2007-05-19 16:43:00) [4]Нехочу использовать WHERe потому что фильтрацию привязываю к событию Change компонента Edit, И тогда код будет выглядеть так:
procedure TForm1.FilterEditChange(Sender: TObject);, т.е. при большом кол-ве записей и многих пользователей - и клиент и сеть будут тормозить.
begin
if FilterCheckBox.Checked = true then
begin
ADOQuery.Close;
ADOQuery.SQL.Text := 'SELECT * From Orders WHERE Address LIKE ' + '''' + FilterEdit.Text + '''';
ADOQuery.Open;
end;
end;
Фильтрация с помощью свойства Filter будет работать только на стороне клиента. - соотв. некаких лишних запрсов к базе.
Пробовал:
ADOQuery.Filter := 'Address = ' + QuotedStr('г.Мос*');и
ADOQuery.Filter := 'Address = ' + QuotedStr('г.Мос%');нифига неработает.,
а так:
ADOQuery.Filter := 'Address = ' + QuotedStr('г.Москва');- работает
Anatoly Podgoretsky (2007-05-19 16:03:00) [5]> sniknik (19.05.2007 15:28:09) [9]
ССЗБ
sniknik (2007-05-19 15:28:00) [6]> Значит надо убрать Where, поскольку он как раз для того, что бы возвращать не все записи.
ага как всегда, сначала нужны все записи... а зачем? а чтобы было потом отфильтровать и получить нужные... ;о)
> Один фиг не помогает.
тогда вместо Pole = 'Арм*' напиши Pole LIKE 'Арм%'
Anatoly Podgoretsky (2007-05-19 15:23:00) [7]> remlin (19.05.2007 15:05:06) [6]
Значит надо убрать Where, поскольку он как раз для того, что бы возвращать не все записи.
Sashok2007 (2007-05-19 15:16:00) [8]Попробуй так 'Pole='+QuotedStr('Фильтр')...........ну и [5] соответственно.
remlin (2007-05-19 15:05:00) [9]>вместо * поставь %
Один фиг не помогает.
Where возращает не все записи из базы.
Мне нужны все записи.
sniknik (2007-05-19 11:24:00) [10]вместо * поставь %
Jan1 (2007-05-19 11:16:00) [11]чем не устраивает использовать WHERE?
remlin (2007-05-19 10:30:00) [12]Извиняюсь.
Надо Фильтровать.
Anatoly Podgoretsky (2007-05-18 21:43:00) [13]> remlin (18.05.2007 19:02:00) [0]
Это вообще не откомпилируется
Правильный ВАся (2007-05-18 19:18:00) [14]
> Необходимо отсортировать данные в возращенном наборе.Пишу:
> ADOQuery.Filter :=
так тебе сортировать или фильтровать
а может мордовать?