![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
фильтр не работает
Choco © (2007-03-15 11:56:00)подскажите где у меня ошибка:
procedure TForm1.Edit1Change(Sender: TObject);
var s:string;
begin
s:='name=';
ADOTable1.Filtered:=false;
ADOTable1.Filter:=s+''''+Edit1.text+'*''';
ADOTable1.Filtered:=true;
if Edit1.Text='' then
ADOTable1.Filtered:=false;
end;
name - имя поля базы данных, в edit1.text ввожу первую букву
Wood (2007-03-17 08:44:00) [1]
> Ты ещё спроси, а не прочитал ли он хотя бы одну книжку по
> тематике :-)
Понимаю, ув. Плохиш ©, что твой ник обязывает наезжать на "начинающих", но зачем в каждой теме повторять одно и тоже. Ведь ты прекрасно помнишь, что я недавно задал вопрос где найти информацию для изучения связки Delphi->mySQL, на что компетентные люди дали пару дельных советов найти литературу по ADO. и я читаю все, что найду. Я люблю читать. :)
У меня есть справка F1 и пара статей из сети по работе с ADO.
Начинал изучение работы с базами данных ч/з BDE (dbf, bd таблицы), юзал EDB, mySQL. Никогда небыло проблем с фильтрацией пока не взялся за mdb.
> ты вообще как LIKE работает знаешь?
я знаю, что я должен получить при запросе с like, используя символы '%'...
И там, где раньше проходило: <таблица>.Filter:= 'field = '+QuotedStr(Edit1.Text);
совершенно не подошло для АDO.
Но больше всего меня удивило то, что не получилось
ADODataSet1.Filter:='countnam Like '+ QuotedStr(Edit1.Text+'%')
а пришлось присвоить строковой переменной тоже самое и заработало. Или это был глюк?
Плохиш (2007-03-16 18:10:00) [2]
> stone © (16.03.07 17:36) [9]
Ты ещё спроси, а не прочитал ли он хотя бы одну книжку по тематике :-)
stone (2007-03-16 17:36:00) [3]
> Wood (16.03.07 17:09) [8]
ты вообще как LIKE работает знаешь?
Wood (2007-03-16 17:09:00) [4]очень странно...
Пробовал свой пример на отдельном проекте
вот так:
ADODataSet1.Filter:='countnam Like ...и edit1.text' и QuotedStr(Edit1.Text) и с символами и без них... нифига. Пока не сделал так:
...
var s: string;
s:=QuotedStr(Edit1.Text+'%');
ADODataSet1.Filter:='countname Like ' +s;
ADODataSet1.Filtered:=True;
ну, и почему так?
Wood (2007-03-16 16:27:00) [5]так, выяснил, что фильтр по одной букве не фильтрует, при вводе целого слова фильтр работает. Значит надо like '%' или еще какие символы?
Wood (2007-03-16 15:57:00) [6]
> Choco © (16.03.07 14:21) [5]
пока нет
Choco (2007-03-16 14:21:00) [7]wood, решил ли проблему?
Wood (2007-03-16 07:11:00) [8]Вот попробовал с примером фильтрации по ID (числовое поле) - работает.
Какие заморочки бывают при работе с фильтром, что в [3] не получается?
Wood (2007-03-16 04:14:00) [9]Прошу прощения, но я хотел бы подключиться к теме этого вопроса. т.к. начал изучать ADO.
ADODataSet->ADOConnect->mdb
в ADODataSet commandtext 'select * from country'.
пробую динамическую фильтрацию при наборе в поле грида (текстовое значение):
mTable.Filter:=DBG_sp.Columns.Items[1].FieldName+' = '+QuotedStr(se_str);
mTable.Filtered:=True; //mTable ->TADODataSet
Мало того, что в гриде сразу исчезают все значения, при вводе следующего символа, ругается, что уже eof и нечего искать. Пробовал менять Курсортип, не помогает.. Информация по работе с данным компонентом скудная :(
Может, при работе фильтра на самом деле работает запрос "select" ? Или плюнуть на фильтр и использовать "правильные" запросы?
Помогите, плз!
зы: погуглил, пояндексил, по..
Плохиш (2007-03-15 16:51:00) [10]
> подскажите где у меня ошибка:
Вот в этих строчках
> ADOTable1.Filter:=s+''''+Edit1.text+'*''';
> ADOTable1.Filtered:=true;
> if Edit1.Text='' then
> ADOTable1.Filtered:=false;
> люди, подскажите, что не так??
Отсутствие знаний и логики, или наоборот...
Choco (2007-03-15 16:41:00) [11]люди, подскажите, что не так??