Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Фильтрация 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 :=

так тебе сортировать или фильтровать
а может мордовать?


Наверх

Титульная страница Поиск, карта сайта Написать письмо