При построении отчета может возникнуть необходимость вывести на печать не все строки из источника данных, а только те строки, которые соответствуют определенному условию. Для того, чтобы отобрать необходимые строки используется фильтрация данных. Фильтрация данных задается при помощи свойства Фильтры (Filters), бэнда Данные (Data). В дополнение к свойству Фильтры (Filters) есть свойство Фильтр включен (FilterOn). Это свойство управляет активностью фильтров, т.е. включена фильтрация или нет.

 

 

Как работает фильтр? В каждом фильтре задается условие. Если условие верно, т.е. результат его вычисления равен значению истина (true), то эта строка данных будет выведена на печать. Если результат вычисления условия фильтра равен значению ложь (false), то эта строка данных будет проигнорирована. Каждый бэнд данных может содержать более одного фильтра, т.е. к примеру можно проверить одну из колонок источника данных на равенство строковой контстанте и одновременно значение из этой колонки должно начинаться с определенного символа. Фильтрация настраивается из окна настройки бэнда Данные (Data), закладка Фильтры (Filters). На рисунке ниже представлено это окно с выбранной закладкой Фильтры.

 

 

Закладка Фильтры (Filters).

Кнопка добавления нового фильтра.

Кнопка удаления выбранного фильтра.

Перемещение выделенного фильтра вверх/вниз.

Тип логической операции, согласно которой будут складываться фильтры. Это поле доступно если бэнд Данные (Data) содержит более одного фильтра. Доступно два варианта - логическое И (And) и логическое ИЛИ (Or). Если выбран вариант логического И (And), то строка данных будет отображаться при печати, если все фильтры будут верны (т.е. условие фильтра будет верно). Если выбран вариант логического ИЛИ (And), то строка данных будет отображаться при печати, если хотя бы один из фильтров будет верен (т.е. условие фильтра будет верно).

img_6 Флажок Фильтр включен (Filter On) используется для включения или выключения фильтров бэнда данных.

img_7 Первый фильтр.

img_8 Второй фильтр.

 

Каждый фильтр представляет из себя условие для обработки строк данных. Условие можно задать следующими способами:

fly Value. Условие задается при помощи мастера;

fly Expression. Условие задается в виде выражения.

 

 

На рисунке ниже поле, в котором указывается способ вычисления условия помечено цифрой 1.

 

 

 

Условие задается при помощи мастера

 

Рассмотрим первый способ, когда условие задается при помощи мастера. На рисунке ниже показана панель настройки условия при помощи мастера. Все элементы обозначены цифрами.

 

 

Способ выбора условия.

В этом поле указывается тип данных с которыми будет работать условие. Всего доступно пять типов данных: Строка (String), Числовой (Numeric), Дата (DateTime), Логический (Boolean), Выражение (Expression). Тип данных влияет на то, как генератор отчетов обрабатывает условие. К примеру, если тип данных это строка, то используются методы работы со строками. Кроме этого, в  зависимости от типа данных меняется список доступных операций условия. Например, только для типа данных Строка (String) доступна операция Содержит (Containing). Последний из доступных типов данных Выражение (Expression) предоставляет возможность вместо второго значения условия указать выражение. При этом генератор отчетов не будет проверять типовую совместимость первого и второго значения условия. Поэтому пользователь должен сам побеспокоиться о корректности выражения.

В поле указывается колонка источника данных, значение из которой будет использовано как первое значение условия.

Вид операции при помощи которой производится вычисление значения условия. Все доступные виды операций доступны ниже в виде таблицы.

 

 

Второе значение условия фильтра. Для некоторых операций требуется указать три значения. Например, для операции between требуется указать два значения.

 

 

Список доступных операций зависит от типа данных. Ниже приведена таблица операций для каждого типа данных с их описанием. Операция выполняется над первым и вторым значением условия.

 

Название операции

Типы данных

Описание

Строка

Числовой

Дата

Логический

Выражение

равно

(equal to)

Check

Check

Check

Check

Check

Если первое значение равно второму, то условие верно.

не равно

(not equal to)

Check

Check

Check

Check

Check

Если первое значение не равно второму, то условие верно.

между

(between)

 

Check

Check

 

Check

Если первое значение находится в диапазоне, то условие верно.

не между

(not between)

 

Check

Check

 

Check

Если первое значение не находится в диапазоне, то условие верно.

больше чем

(greater than)

 

Check

Check

 

Check

Если первое значение больше, чем второе значение, то условие верно

больше чем или равно

(greater than or equal to)

 

Check

Check

 

Check

Если первое значение больше или равно второму значению, то условие верно.

меньше чем

(less than)

 

Check

Check

 

Check

Если первое значение меньше, чем второе значение, то условие верно.

меньше чем или равно

(less then or equal to)

 

Check

Check

 

Check

Если первое значение меньше или равно второму значению, то условие верно.

содержит

(containing)

Check

 

 

 

 

Если первое значение содержит второе значение, то условие верно. Данная операция применима только к строкам.

не содержит

(not containing)

Check

 

 

 

 

Если первое значение не содержит второе значение, то условие верно. Данная операция применима только к строкам.

начинается с

(beginning with)

Check

 

 

 

 

Если первое значение начинается со второго значения, то условие верно. Данная операция применима только к строкам.

заканчивается на

(ending with)

Check

 

 

 

 

Если первое значение заканчивается вторым значением, то условие верно. Данная операция применима только к строкам.

 

Условие задается в виде выражения:

При использовании условия типа Выражения (Expression), условие задается текстовым выражениям, которое должно вернуть булевское значение. Панель настройки показана на рисунке ниже:

 

Способ выбора условия.

В этом поле указывается выражение, которое должно вернуть булевского значение. Например, выражение на C#:

 

 

Customers.ID == 53447

 

 

Если выражение вернет значение не булевского типа, то генератор отчетов не сможет построить выражение такого типа.