X11
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Подскажите, как правильно программно отфильтровать по условиям ИЛИ + И Вот мой код: Код: try Grid2.DataController.Filter.BeginUpdate; with Grid2.DataController.Filter.Root do begin Clear; if (Edit1.Text <> '') and (Edit1.Text <> sConstSearchStreet) then begin AddItem(grid2street_name, foLike, '%' + Trim(Edit1.Text) + '%', Edit1.Text); BoolOperatorKind := fboOr; AddItem(grid2Text, foLike, '%' + Trim(Edit1.Text) + '%', Edit1.Text); end; if (Edit2.Text <> '') and (Edit2.Text <> sConstSearchPrice) then AddItem(grid2price, foLessEqual, Trim(Edit2.Text), Edit2.Text); end;// with Grid2.DataController.Filter.Active := true; finally Grid2.DataController.Filter.EndUpdate; end; | На форме 2 TEdit для ввода улицы и цены. В таблице есть 3 поля, по которым нужно выполнять фильтрацию по таким условиям: Если пользователь ввёл только улицу, то фильтруем по полям Улица и Текс. Если пользователь ввёл только цену, то фильтруем по полю Цена. Если пользователь ввёл и цену, и улицу, то фильтруем так: показываем все записи таблицы, где есть (улица в поле Улица ИЛИ Текст) И (цена <= указанному значению) Сейчас так: а хочется так: Добавлено: Сделал по этому примеру: http://www.devexpress.com/Support/Center/KB/p/A1937.aspx Вроде оно Код: var AItemList: TcxFilterCriteriaItemList; begin try Grid2.DataController.Filter.BeginUpdate; with Grid2.DataController.Filter.Root do begin Clear; if (Edit1.Text <> '') and (Edit1.Text <> sConstSearchStreet) then begin AItemList := AddItemList(fboOr); AItemList.AddItem(grid2street_name, foLike, '%' + Trim(Edit1.Text) + '%', Edit1.Text); AItemList.AddItem(grid2Text, foLike, '%' + Trim(Edit1.Text) + '%', Edit1.Text); end; if (Edit2.Text <> '') and (Edit2.Text <> sConstSearchPrice) then AddItem(grid2price, foLessEqual, Trim(Edit2.Text), Edit2.Text); end;// with Grid2.DataController.Filter.Active := true; finally Grid2.DataController.Filter.EndUpdate; end; |
---------- /не мы такие, жизнь такая/ |
|