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

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

Как осуществить динамическую фильтрацию? [D6, ACCESS]


-=DeMoH=- ©   (2003-05-05 00:27:00) 

Юзаю БД из ACCESS с помощью ADO. Как мне сделать так, чтобы DBGrid показывал только те записи, которые начинаются со строки заданной в Edit?

procedure TForm1.Edit3Change(Sender: TObject);
begin
........
end;


-=DeMoH=-   (2003-05-05 13:26:00) [1]

Ooops... sorry...

Все заработало!!!

Спасибо всем, скоро еще че-нить спрошу :-])


sniknik   (2003-05-05 13:25:00) [2]

> но почему-то ничего и не фильтрует!

AdoTable1.Filtered:= true; ??


WarLord   (2003-05-05 13:23:00) [3]

Table.Filtered:= True поставил?


-=DeMoH=-   (2003-05-05 13:22:00) [4]

а "Like" это типа вроде условия на нестрогое равенство?


-=DeMoH=-   (2003-05-05 13:19:00) [5]

Написал, ошибок не выдает, но почему-то ничего и не фильтрует!
Может что-нить упустил (пробовал и DBGrid1.Refresh)
P.S.:Независимо от того, что вводится в поле, DBGrid по прежнему показывает одно и то же (но событие OnChange выполняется корректно).


WarLord   (2003-05-05 13:15:00) [6]

% обозначает любое сочетание символов


-=DeMoH=-   (2003-05-05 13:10:00) [7]

Интересный пример, а кстати зачем нужен символ "%"? А что будет, если в значении полей могут быть пробелы (типа зачем Trim)?
P.S.: Сейчас проверю, мб и заработает


Babay   (2003-05-05 13:08:00) [8]

procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text<>"" then
AdoTable1.Filter:="[Начальный капитал] Like ("""+Edit1.Text+"%"")"
else AdoTable1.Filter:="";
end;

Пробел до и после слова Like ОБЯЗАТЕЛЕН!!!
у меня вот так работает (специально прожку откатал)
Дальше подробнее смотри Like в языке SQL


NickBat   (2003-05-05 13:05:00) [9]

Экий вы батенька ленивец! :))

MyQueryFilter:="nachkap like "+#39+"%"+Trim(Edit.Text)+"%"+#39;
Причем это поставить в событии onChange для Edit


-=DeMoH=-   (2003-05-05 12:34:00) [10]

Меня у совсем запутали все эти галочки и кавычки! Приведите конкретный пример для, например, поля "Начальный капитал" !
И желательно для ADOTable (причем нужно сделать так, чтобы этот метод обрабатывался при каждом изменении значения поля Edit и соответственно менялась информация в DBGrid!


Babay   (2003-05-05 07:54:00) [11]

-> Тут можно пользоваться либо свойством Table.Filter:="pole=""+Edit1.Text+""";
это по моему несовсем верно
для ADOQuery у меня это делается так

MyQuery.Filter:="pole like("""+Edit1.Text+"%"")";

для таблице по идее должно быть так же...


-=DeMoH=-   (2003-05-05 01:47:00) [12]

Попробовал, но ничего не получается: прога компилится без вопросов, но вот при вводе чего-угодно в Edit выдается ошибка:
1)Несовпадение типов;
2)Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом;


sunrider   (2003-05-05 00:40:00) [13]

Тут можно пользоваться либо свойством Table.Filter:="pole=""+Edit1.Text+""";
Table.Filtered:=True;
(то же для Query)
Или событием OnFilter
Accept=DataSet["pole"]=Edit1.Text;
А по поводу CheckBox в DBGrid - объекты можно встраивать,
но можно использовать свойство DBGrid.SelectedRows. Только
включить в DBGrid.Options свойство - MultiSelect. После этого
организуешь цикл типа
for i:=0 to DBGrid.SelectedRows.Count-1 do
begin
Table.GotoBookmark(pointer(DBGrid.SelectedRows[i]));
<оператор>
end;



-=DeMoH=-   (2003-05-05 00:31:00) [14]

И еще вопрос: как мне сделать так, чтобы в DBGrid"е рядом с каждой строкой стоял CheckBox и пользователь мог таким образом отметить несколько строк, а затем по нажатии чего-либо енто все перекидывалось в каку-нибудь новую таблицу для просмотра или сохранения в файл?


Наверх

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