Поделиться через


Ссылки на коллекции переменных отчета и группы (построитель отчетов и службы SSRS)

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

ПримечаниеПримечание

В построителе отчетов или конструкторе отчетов SQL Server Data Tools можно создавать и изменять определения отчета (RDL). В каждой среде разработки существуют различные способы создания, открытия и сохранения отчетов и связанных элементов. Дополнительные сведения см. в разделе Разработка отчетов в построителе отчетов и конструкторе отчетов (SSRS) на веб-сайте microsoft.com.

Переменные отчета

Переменная отчета используется для хранения значения зависимых от времени вычислений, например курсов валют или отметок времени, либо для сложного вычисления, на которое указывает несколько ссылок. По умолчанию переменная отчета вычисляется один раз и может использоваться во всех выражениях отчета. Переменные отчета по умолчанию доступны только для чтения. Можно изменить эту настройку по умолчанию путем включения переменной отчета как допускающей чтение и запись. Значение переменной отчета сохраняется в течение всего сеанса, до повторной обработки отчета.

Чтобы добавить переменную отчета, следует открыть диалоговое окно Свойства отчета, выбрать пункт Переменные и ввести имя и значение. Имена — это строки с учетом регистра, которые начинаются с буквы и не содержат пробелов. Имя может содержать буквы, цифры и символы подчеркивания (_).

Для ссылки на переменную в выражении используется синтаксис глобальной коллекции, например =Variables!CustomTimeStamp.Value. В области конструктора значение появляется в текстовом поле в виде <<Expr>>.

Параметры отчета можно использовать следующими способами.

  • Использование только для чтения. Однократное задание значения в целях создания константы для сеанса работы с отчетом, например, для создания временной метки.

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

  • Использование для чтения и записи. Значение задается единожды и сериализуется в ходе сеанса работы с отчетом. Вариант с чтением и записью для переменных представляет собой лучшую альтернативу по сравнению с использованием статической переменной в блоке «Код» определения отчета.

    Если отменить параметр Только для чтения для переменной, то свойство Writable для этой переменной задается равным true. Чтобы обновить значение этой переменной с помощью выражения, можно использовать метод SetValue, например =Variables!MyVariable.SetValue("123").

    ПримечаниеПримечание

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

Дополнительные сведения о сеансах см. в разделе Предварительный просмотр отчетов в построителе отчетов.

Групповые переменные

Групповые переменные используются для однократного вычисления сложного выражения в области группы. Групповая переменная действительна только в области группы и ее дочерних групп.

Например, предположим, что область данных отображает складские запасы элементов, находящихся в различных налоговых категориях, и требуется установить налоговые ставки для каждой категории. Можно сгруппировать данные по полю Category и определить переменную Tax в родительской группе. Потом необходимо определить групповую переменную ItemTax для параметра для каждой категории налога и назначить для каждой из отдельных подгрупп Category требуемую групповую переменную. Примеры.

  • Для родительской группы, основанной на [Category], следует определить переменную Tax со значением [Tax]. Предположим, что значениями категории являются пищевые продукты и одежда.

  • Для дочерней группы, основанной на [Subcategory], следует определить переменную ItemsTax как =Variables!Tax.Value * Sum(Fields!Price.Value). Предположим, что значениями подкатегории для категории «Пищевые продукты» являются напитки и хлеб. Предположим, что значениями подкатегории «Одежда» являются рубашки и шляпы.

  • В текстовом поле в строке дочерней группы следует добавить выражение =Variables!ItemsTax.Value.

    В текстовом поле отображается полная сумма налога для напитков и хлеба при помощи налога «Пищевые продукты» и для рубашек и шляп — при помощи налога «Одежда».

Чтобы добавить групповую переменную, следует открыть диалоговое окно Свойства группы табликса, выбрать пункт Переменные и ввести имя и значение. Групповая переменная вычисляется один раз для уникального значения группы.

Для ссылки на переменную в выражении используется синтаксис глобальной коллекции, например =Variables!GroupDescription.Value. В области конструктора значение появляется в текстовом поле в виде <<Expr>>.

См. также

Справочник

Встроенные коллекции в выражениях (построитель отчетов и службы SSRS)

Примеры выражений (построитель отчетов и службы SSRS)

Основные понятия

Фильтрация, группирование и сортировка данных (построитель отчетов и службы SSRS)