Обзор вычисляемых полей
Вычисляемые поля позволяют предварительно обрабатывать входные данные отчета на основе определенного выражения. Таким образом, использование вычисляемых полей позволяет применять сложные выражения к одному или нескольким полям данных, полученным из базового источника данных вашего отчета. Кроме того, вы можете группировать и сортировать данные отчета на основе значения вычисляемого поля.
Создание вычисляемых полей
Чтобы создать вычисляемое поле, перейдите в Список полей , выберите таблицу данных и нажмите Добавить вычисляемое поле .
Нажмите кнопку Правка для вычисляемого поля, чтобы отобразить свойства вычисляемого поля. Нажмите кнопку свойства Выражение.
В вызванном Редакторе выражений создайте требуемое выражение. Вы можете использовать поля данных, параметры отчетов, предопределенные константы, а также различные функции даты и времени, логические, математические и строковые функции. Дополнительные сведения о синтаксисе выражений см. в следующем разделе документа.
Замечание
Редактор выражений отображает только те поля данных, которые получены из источника данных, заданного значениями свойств Источник данных и Элемент данных вычисляемого поля.
Переключитесь на панель Свойства, выберите категорию Данные и разверните раздел Вычисляемые поля, чтобы отобразить коллекцию вычисляемых полей и управлять ее элементами.
Вычисляемое поле из Списка полей можно перетащить на нужную секцию, как обычное поле данных.
Вы также можете группировать и сортировать данные отчета на основе вычисляемых значений полей.
Синтаксис выражений
Поле данных вставляется в текст выражения, используя его имя в [ квадратных скобках ], а параметры вставляются с использованием префикса ? перед их именами.
Выражение вычисляемого поля может оценивать значения других вычисляемых полей, если вы избегаете циклических ссылок.
Константы даты и времени должны быть заключены в хэштеги ( # ) (например, [OrderDate] >= #1/1/2009# ). Чтобы представить нулевую ссылку (не относящуюся ни к какому объекту), используйте вопросительный знак (например, [Регион] != ? ). Для обозначения строк используйте апострофы ( ' ), иначе произойдет ошибка.
Чтобы вставить апостроф в текст выражения, ему должен предшествовать другой апостроф (например, 'Образец текста' ).
Тип значения, возвращаемого вычисляемым полем, определяется его свойством Тип поля.
Если в выражении вычисляемого поля используются разные типы, необходимо преобразовать их в один и тот же тип (например, Max(ToDecimal([Quantity]),[UnitPrice])) ).
Хотя значение, возвращаемое вычисляемым полем, обычно преобразуется в строку (для отображения в текстовом элементе управления отчетом), оно может возвращать значение любого типа. Например, если поле базы данных содержит изображение, можно задать для выражения вычисляемого поля значение "=...", после чего это вычисляемое поле можно привязать к элементу управления Картинка.
Чтобы построить допустимое агрегатное выражение, используйте следующий формат, состоящий из четырех частей.
[<Коллекция>][<Условие>].<Агрегат>(<Выражение>)
- <Коллекция> - указывает коллекцию, для которой должно быть рассчитано агрегированное значение. Это может быть имя отношения в случае отношения master-detail или имя свойства коллекции, предоставляемого целевым классом. Например, [CategoriesProducts][[CategoryId]>5].Count(). Пустые скобки [] указывают на корневую коллекцию.
- <Условие> - указывает условие, определяющее, какие записи должны участвовать в вычислении агрегатной функции. Чтобы получить агрегированное значение для всех записей, удалите это логическое предложение вместе с квадратными скобками (например, [].Count()).
- <Агрегат> - указывает одну из доступных агрегатных функций.
- <Выражение> - указывает выражение, оценивающее значения, которые будут использоваться для выполнения вычислений. Например, [][[CategoryID] > 5].Sum([UnitPrice]*[Quantity]). Функция Count не требует значений полей для подсчета записей, поэтому оставьте для этой функции круглые скобки пустыми.
Вы можете обратиться к обрабатываемой в данный момент группе с помощью оператора обхода родительских отношений ('^'). Это позволяет вам вычислять агрегаты внутри групп, используя следующие выражения: [][[^.CategoryID] == [CategoryID]].Sum([UnitPrice]).
Дополнительные сведения см. в разделе Синтаксис выражений.
Примеры
Следующие руководства демонстрируют использование вычисляемых полей в различных средах: