Встроенные коллекции — ссылки на переменные отчета и группы в отчете с разбивкой на страницы (построитель отчетов)
При сложном вычислении, которое используется несколько раз в выражениях в отчете с разбивкой на страницы, может потребоваться создать переменную. Можно создать переменную отчета или переменную группы. В отчете имена переменных должны быть уникальными.
Создать и изменить определение для отчета на страницу (RDL-файл) можно с помощью построителя отчетов (Майкрософт), построителя отчетов Power BI и конструктора отчетов в SQL Server Data Tools.
Переменные отчета
Переменная отчета используется для хранения значения зависимых от времени вычислений, например курсов валют или отметок времени, либо для сложного вычисления, на которое указывает несколько ссылок. По умолчанию переменная отчета вычисляется один раз и может использоваться во всех выражениях отчета. Переменные отчета по умолчанию доступны только для чтения. Можно изменить эту настройку по умолчанию путем включения переменной отчета как допускающей чтение и запись. Значение переменной отчета сохраняется в течение всего сеанса, до повторной обработки отчета.
Чтобы добавить переменную отчета, откройте диалоговое окно Свойства отчета , выберите пункт Переменные и введите имя и значение. Имена — это строки с учетом регистра, которые начинаются с буквы и не содержат пробелов. Имя может содержать буквы, цифры и символы подчеркивания (_).
Для ссылки на переменную в выражении используется синтаксис глобальной коллекции, например =Variables!CustomTimeStamp.Value . В области конструктора значение появляется в текстовом поле в виде <<Expr>> .
Параметры отчета можно использовать следующими способами.
Использование только для чтения . Задайте значение один раз, чтобы создать константу для сеанса работы с отчетом, например, для создания метки времени.
Выражения в текстовых полях вычисляются по требованию при просмотре отчета пользователем, поэтому динамические значения (например, выражение, включающее функцию Now() , возвращающую время суток) могут возвращать различные значения после просмотра следующей страницы и возврата к предыдущей странице с помощью кнопки Назад . Путем задания значения переменной отчета для выражения =Now() и добавления переменной в выражение гарантируется использование одного и того же значения при обработке отчета.
Использование для чтения и записи . Задайте значение единожды и сериализуйте его в ходе сеанса работы с отчетом. Вариант с чтением и записью для переменных представляет собой лучшую альтернативу по сравнению с использованием статической переменной в блоке «Код» определения отчета.
Если отменить параметр Только для чтения для переменной, то свойство Writable для этой переменной задается равным true. Чтобы обновить значение этой переменной с помощью выражения, используйте метод SetValue, например =Variables!MyVariable.SetValue("123") .
Нельзя управлять инициализацией переменной или вычислением выражения, которое обновляет значение переменной, в обработчике отчетов. Порядок выполнения при инициализации переменной не определен.
Дополнительные сведения о сеансах см. в разделе Previewing Reports in Report Builder.
Групповые переменные
Групповые переменные используются для однократного вычисления сложного выражения в области группы. Групповая переменная действительна только в области группы и ее дочерних групп.
Например, предположим, что область данных отображает складские запасы элементов, находящихся в различных налоговых категориях, и требуется установить налоговые ставки для каждой категории. Затем следует сгруппировать данные в категории и определить переменную Tax в родительской группе. Потом необходимо определить групповую переменную для параметра ItemTax для каждой налоговой категории и назначить для каждой из отдельных подгрупп категории требуемую групповую переменную. Пример:
Для родительской группы, основанной на [Category] , следует определить переменную Tax со значением [Tax] . Предположим, что значениями категории являются пищевые продукты и одежда.
Для дочерней группы, основанной на [Subcategory] , следует определить переменную ItemsTax как =Variables!Tax.Value * Sum(Fields!Price.Value) . Предположим, что значениями подкатегории для категории «Пищевые продукты» являются напитки и хлеб. Предположим, что значениями подкатегории «Одежда» являются рубашки и шляпы.
В текстовом поле в строке дочерней группы следует добавить выражение =Variables!ItemsTax.Value .
В текстовом поле отображается полная сумма налога для напитков и хлеба при помощи налога «Пищевые продукты» и для рубашек и шляп — при помощи налога «Одежда».
Чтобы добавить групповую переменную, следует открыть диалоговое окно Свойства группы табликса , выбрать пункт Переменные и ввести имя и значение. Групповая переменная вычисляется один раз для уникального значения группы.