При построении отчета может возникнуть необходимость вывести на печать не все строки из источника данных, а только те строки, которые соответствуют определенному условию. Для того, чтобы отобрать необходимые строки используется фильтрация данных. Фильтрация данных задается при помощи свойства Фильтры (Filters), бэнда Данные (Data). В дополнение к свойству Фильтры (Filters) есть свойство Фильтр включен (FilterOn). Это свойство управляет активностью фильтров, т.е. включена фильтрация или нет.
Как работает фильтр? В каждом фильтре задается условие. Если условие верно, т.е. результат его вычисления равен значению истина (true), то эта строка данных будет выведена на печать. Если результат вычисления условия фильтра равен значению ложь (false), то эта строка данных будет проигнорирована. Каждый бэнд данных может содержать более одного фильтра, т.е. к примеру можно проверить одну из колонок источника данных на равенство строковой контстанте и одновременно значение из этой колонки должно начинаться с определенного символа. Фильтрация настраивается из окна настройки бэнда Данные (Data), закладка Фильтры (Filters). На рисунке ниже представлено это окно с выбранной закладкой Фильтры.
Закладка Фильтры (Filters).
Кнопка добавления нового фильтра.
Кнопка удаления выбранного фильтра.
Перемещение выделенного фильтра вверх/вниз.
Тип логической операции, согласно которой будут складываться фильтры. Это поле доступно если бэнд Данные (Data) содержит более одного фильтра. Доступно два варианта - логическое И (And) и логическое ИЛИ (Or). Если выбран вариант логического И (And), то строка данных будет отображаться при печати, если все фильтры будут верны (т.е. условие фильтра будет верно). Если выбран вариант логического ИЛИ (And), то строка данных будет отображаться при печати, если хотя бы один из фильтров будет верен (т.е. условие фильтра будет верно).
Флажок Фильтр включен (Filter On) используется для включения или выключения фильтров бэнда данных.
Первый фильтр.
Второй фильтр.
Каждый фильтр представляет из себя условие для обработки строк данных. Условие можно задать следующими способами:
Value. Условие задается при помощи мастера;
Expression. Условие задается в виде выражения.
На рисунке ниже поле, в котором указывается способ вычисления условия помечено цифрой 1.
Условие задается при помощи мастера
Рассмотрим первый способ, когда условие задается при помощи мастера. На рисунке ниже показана панель настройки условия при помощи мастера. Все элементы обозначены цифрами.
Способ выбора условия.
В этом поле указывается тип данных с которыми будет работать условие. Всего доступно пять типов данных: Строка (String), Числовой (Numeric), Дата (DateTime), Логический (Boolean), Выражение (Expression). Тип данных влияет на то, как генератор отчетов обрабатывает условие. К примеру, если тип данных это строка, то используются методы работы со строками. Кроме этого, в зависимости от типа данных меняется список доступных операций условия. Например, только для типа данных Строка (String) доступна операция Содержит (Containing). Последний из доступных типов данных Выражение (Expression) предоставляет возможность вместо второго значения условия указать выражение. При этом генератор отчетов не будет проверять типовую совместимость первого и второго значения условия. Поэтому пользователь должен сам побеспокоиться о корректности выражения.
В поле указывается колонка источника данных, значение из которой будет использовано как первое значение условия.
Вид операции при помощи которой производится вычисление значения условия. Все доступные виды операций доступны ниже в виде таблицы.
Второе значение условия фильтра. Для некоторых операций требуется указать три значения. Например, для операции between требуется указать два значения.
Список доступных операций зависит от типа данных. Ниже приведена таблица операций для каждого типа данных с их описанием. Операция выполняется над первым и вторым значением условия.
Название операции |
Типы данных |
Описание |
||||
---|---|---|---|---|---|---|
Строка |
Числовой |
Дата |
Логический |
Выражение |
||
равно (equal to) |
Если первое значение равно второму, то условие верно. |
|||||
не равно (not equal to) |
Если первое значение не равно второму, то условие верно. |
|||||
между (between) |
|
|
Если первое значение находится в диапазоне, то условие верно. |
|||
не между (not between) |
|
|
Если первое значение не находится в диапазоне, то условие верно. |
|||
больше чем (greater than) |
|
|
Если первое значение больше, чем второе значение, то условие верно |
|||
больше чем или равно (greater than or equal to) |
|
|
Если первое значение больше или равно второму значению, то условие верно. |
|||
меньше чем (less than) |
|
|
Если первое значение меньше, чем второе значение, то условие верно. |
|||
меньше чем или равно (less then or equal to) |
|
|
Если первое значение меньше или равно второму значению, то условие верно. |
|||
содержит (containing) |
|
|
|
|
Если первое значение содержит второе значение, то условие верно. Данная операция применима только к строкам. |
|
не содержит (not containing) |
|
|
|
|
Если первое значение не содержит второе значение, то условие верно. Данная операция применима только к строкам. |
|
начинается с (beginning with) |
|
|
|
|
Если первое значение начинается со второго значения, то условие верно. Данная операция применима только к строкам. |
|
заканчивается на (ending with) |
|
|
|
|
Если первое значение заканчивается вторым значением, то условие верно. Данная операция применима только к строкам. |
Условие задается в виде выражения:
При использовании условия типа Выражения (Expression), условие задается текстовым выражениям, которое должно вернуть булевское значение. Панель настройки показана на рисунке ниже:
Способ выбора условия.
В этом поле указывается выражение, которое должно вернуть булевского значение. Например, выражение на C#:
Customers.ID == 53447
Если выражение вернет значение не булевского типа, то генератор отчетов не сможет построить выражение такого типа.