Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.007 c
3-83379
Niki
2003-05-06 12:19
2003.05.26
T-SQL


14-83683
Dmitriy_R
2003-05-06 07:08
2003.05.26
ServerSocket


3-83329
eee
2003-05-05 12:23
2003.05.26
DBGrid


3-83393
bss
2003-05-06 14:02
2003.05.26
Сохранение поля типа TDateTime в базе MS Access (ADO)


3-83353
Darkin
2003-05-06 01:53
2003.05.26
Проблемы с записью в БД Paradox.......





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский