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

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

Поиск с фильтром в компонентах ADO [D7, Access]


SergeyM ©   (2004-09-25 09:39:00) 

Привет мастера!
Немогу реализовать фильтрацию по символам, хотябы по начальным, в компоненте ADOTable.
Пишу как написано в хелпе:

DataModule1.ADOTable1.Filtered:=false;
DataModule1.ADOTable1.Filter:=Col+' = '+QuotedStr(Edit1.Text);
Edit2.Text:=DataModule1.ADOTable1.Filter;// это так для просмотра что там с фильтром
DataModule1.ADOTable1.Filtered:=true;

Пробовал и так:
<code.
DataModule1.ADOTable1.Filtered:=false;
DataModule1.ADOTable1.Filter:=Col+' = '+QuotedStr(Edit1.Text+'*');
edit2.Text:=DataModule1.ADOTable1.Filter;
DataModule1.ADOTable1.Filtered:=true;

Ниче не получается, в смысле получается пустой DBGrid.
Метод Locate работает но нужна фильтрация, причем по части выражения.


SergeyM   (2004-09-25 12:17:00) [1]

Причем работает и со *


SergeyM   (2004-09-25 12:16:00) [2]

Все ОК спасибо!


sniknik   (2004-09-25 12:09:00) [3]

> не по полному названию, а по его части
черт, ну конечно же
DataModule1.ADOTable1.Filter:=Col+' LIKE '+QuotedStr(Edit1.Text+'%');


SergeyM   (2004-09-25 12:06:00) [4]

В переменной Col содержится имя столбца по которому происходит фильтрация. Например в столбце Nam существует запись Dir.exe, при поиске:

DAtaModule1.ADOTable1.Locate(col,Edit1.Text,[loCaseInsensitive,loPartialKey]);

Все нормально работает причем при постепенном вводе курсор перемещается на запись ближайшую к заданной в Edit1.Text,
а вот при фильтрации, если я ввожу к примеру dir , то отображается пустой Грид, если же (работает только с первым описанным случаем) ввожу dir.exe, то фильтр работает. А мне нужно реализовать не по полному названию, а по его части. Вдруг я не помню полного названия?


sniknik   (2004-09-25 11:34:00) [5]

> Неработает.
а вообщето правильно, у тебя что в фильтре получается?
после такого составления, смотрел?
DataModule1.ADOTable1.Filter:= Col+' = '+QuotedStr(Edit1.Text+'%');
в переменной Col чего? или это имя поля?
тогда так проверь
DataModule1.ADOTable1.Filter:='Col='+QuotedStr(Edit1.Text+'%');


Anatoly Podgoretsky   (2004-09-25 11:28:00) [6]

Как раз наоборот все работает - нет ни одной записи удовлетворяющей условию фильтра, если бы не работало, то выдало бы все записи.


SergeyM   (2004-09-25 11:23:00) [7]

Неработает.


sniknik   (2004-09-25 11:16:00) [8]

замени * на % и проверь еще раз


Наверх

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