Форум: "Базы";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
ВнизКак осуществить динамическую фильтрацию? Найти похожие ветки
← →
-=DeMoH=- (2003-05-05 00:27) [0]Юзаю БД из ACCESS с помощью ADO. Как мне сделать так, чтобы DBGrid показывал только те записи, которые начинаются со строки заданной в Edit?
procedure TForm1.Edit3Change(Sender: TObject);
begin
........
end;
← →
-=DeMoH=- (2003-05-05 00:31) [1]И еще вопрос: как мне сделать так, чтобы в DBGrid"е рядом с каждой строкой стоял CheckBox и пользователь мог таким образом отметить несколько строк, а затем по нажатии чего-либо енто все перекидывалось в каку-нибудь новую таблицу для просмотра или сохранения в файл?
← →
sunrider (2003-05-05 00:40) [2]Тут можно пользоваться либо свойством 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 01:47) [3]Попробовал, но ничего не получается: прога компилится без вопросов, но вот при вводе чего-угодно в Edit выдается ошибка:
1)Несовпадение типов;
2)Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом;
← →
Babay (2003-05-05 07:54) [4]-> Тут можно пользоваться либо свойством Table.Filter:="pole=""+Edit1.Text+""";
это по моему несовсем верно
для ADOQuery у меня это делается так
MyQuery.Filter:="pole like("""+Edit1.Text+"%"")";
для таблице по идее должно быть так же...
← →
-=DeMoH=- (2003-05-05 12:34) [5]Меня у совсем запутали все эти галочки и кавычки! Приведите конкретный пример для, например, поля "Начальный капитал" !
И желательно для ADOTable (причем нужно сделать так, чтобы этот метод обрабатывался при каждом изменении значения поля Edit и соответственно менялась информация в DBGrid!
← →
NickBat (2003-05-05 13:05) [6]Экий вы батенька ленивец! :))
MyQueryFilter:="nachkap like "+#39+"%"+Trim(Edit.Text)+"%"+#39;
Причем это поставить в событии onChange для Edit
← →
Babay (2003-05-05 13:08) [7]procedure TForm1.Edit1Change(Sender: TObject);
begin
if Edit1.Text<>"" then
AdoTable1.Filter:="[Начальный капитал] Like ("""+Edit1.Text+"%"")"
else AdoTable1.Filter:="";
end;
Пробел до и после слова Like ОБЯЗАТЕЛЕН!!!
у меня вот так работает (специально прожку откатал)
Дальше подробнее смотри Like в языке SQL
← →
-=DeMoH=- (2003-05-05 13:10) [8]Интересный пример, а кстати зачем нужен символ "%"? А что будет, если в значении полей могут быть пробелы (типа зачем Trim)?
P.S.: Сейчас проверю, мб и заработает
← →
WarLord (2003-05-05 13:15) [9]% обозначает любое сочетание символов
← →
-=DeMoH=- (2003-05-05 13:19) [10]Написал, ошибок не выдает, но почему-то ничего и не фильтрует!
Может что-нить упустил (пробовал и DBGrid1.Refresh)
P.S.:Независимо от того, что вводится в поле, DBGrid по прежнему показывает одно и то же (но событие OnChange выполняется корректно).
← →
-=DeMoH=- (2003-05-05 13:22) [11]а "Like" это типа вроде условия на нестрогое равенство?
← →
WarLord (2003-05-05 13:23) [12]Table.Filtered:= True поставил?
← →
sniknik (2003-05-05 13:25) [13]> но почему-то ничего и не фильтрует!
AdoTable1.Filtered:= true; ??
← →
-=DeMoH=- (2003-05-05 13:26) [14]Ooops... sorry...
Все заработало!!!
Спасибо всем, скоро еще че-нить спрошу :-])
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c