Использование ссылок на коллекции Variables отчета и группы (построитель отчетов версии 3.0 и службы SSRS)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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