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

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

Установка фильтра в TDStringGrid [D6, Paradox, ]


phantom2040 ©   (2001-12-04 13:27:00) 

Люди помогите пожалуйста!
Проблема с синтаксисом, нужно установить фильтр в TDStringGrid, из поля TEedit1, но не один фильтр а несколько то есть я хочу установит несколько фильтров, значит следующий пример работает:
DataModule.DataSource.DataSet.Filter:="name="+QuotedStr(Edit1.Text+"*");
но установка 2 фильтров типа
DataModule.DataSource.DataSet.Filter:="name="+QuotedStr(Edit1.Text+"*")and "io="+QuotedStr(Edit2.Text+"*");
почему-то не прокатывает, хотя когда пишу непосредственнов свойстве Filter все работает, информация по справкам довольно скудная, и сам я не смого разобраться с синтаксисом, помогите??


EsKor   (2001-12-06 03:14:00) [1]

Замечание от "Котелка" совершенно справедливо, поскольку Filter имеет текстовый (строковый) тип, т.е. формат должен быть такой:
Filter:="условие";. "условие" м.б. "каким угодно" сложным.
Дополнительные "грабли" существуют при задании фильтра следующего вида:
X = "техт". В этом случае необходимо формировать строку в строке, типа
Filter := "X=""" + ComboBox.Text + """".
Кроме того, если используете операторы типа AND, OR и т.п., заключайте выражения до и после них в скобки. Не знаю как в Фильтре, а согласно синтаксису языка Object Pascal эти операторы имеют достаточно высокий приоритет, т.е. запись x = a AND b, будет обрабатываться как x = (a AND b),
а x > a AND x < b, может предстать в виде x > (a AND b) < b с соответствующими последствиями.


Котелок   (2001-12-05 01:00:00) [2]

DataModule.DataSource.DataSet.Filter:="name="+QuotedStr(Edit1.Text+"*")+" and "+"io="+QuotedStr(Edit2.Text+"*");

and Тоже в фильтр входит его надо добавлять к строке;


Igorok   (2001-12-04 15:05:00) [3]

попробуй так, проще и наглядней чем строки суммировать....

DataSource1.DataSet.Filter := Format("(name Like %s) and (io Like %s)",[QuotedStr(Edit1.Text+"*"),QuotedStr(Edit2.Text+"*")]);


Slava   (2001-12-04 13:43:00) [4]

Св-во Filter имеет тип String.
У тебя то, что справа от ":=" имеет тип String?


Наверх

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