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


Использование в выражениях ссылок на пользовательский код (построитель отчетов 2.0)

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

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

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

Внедренный код

Чтобы добавить внедренный код в отчет, используйте кодовую страницу диалогового окна Свойства отчета. Этот созданный блок кода может содержать несколько методов. Методы во внедренном коде должны быть написаны на языке MicrosoftVisual Basic и основываться на экземпляре. Обработчик отчетов автоматически добавляет ссылки для пространств имен System.Convert и System.Math. В построителе отчетов 2.0 не поддерживаются ссылки на дополнительные сборки.

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

=Code.ToUSD(Fields!StandardCost.Value)

Чтобы сослаться на встроенные коллекции в пользовательском коде, включите ссылку во встроенный объект Report:

=Report.Parameters!Param1.Value

В следующих примерах показано, как можно определить некоторые пользовательские константы и переменные:

Public Const MyNote = "Authored by Bob"
Public Const NCopies As Int32 = 2
Public Dim  MyVersion As String = "123.456"
Public Dim MyDoubleVersion As Double = 123.456

Хотя пользовательские константы не появляются в категории Константы диалогового окна Выражение (в котором отображаются только встроенные константы), на них можно добавить ссылку из любого выражения, как показано в следующих примерах. В выражении пользовательская константа рассматривается как данные типа Variant.

=Code.MyNote
=Code.NCopies
=Code.MyVersion
=Code.MyDoubleVersion

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

Примеры ссылок на параметры из пользовательского кода

Можно ссылаться на коллекции глобальных параметров через пользовательский код в блоке «Код» определения отчета или в предоставляемой пользовательской сборке. Коллекция параметров допускает только чтение, и у нее нет общих итераторов. Нельзя воспользоваться конструкцией Visual BasicFor Each для пошагового просмотра коллекции. Прежде чем сослаться на параметр из своего кода, необходимо узнать его имя, заданное в определении отчета. Однако можно организовать итерацию по всем значениям многозначного параметра. Дополнительные сведения см. в разделе Использование в выражениях ссылок на пользовательский код (построитель отчетов 2.0).

Следующая таблица включает примеры ссылок на встроенную коллекцию Parameters из пользовательского кода.

Описание

Ссылки в выражении

Определение пользовательского кода

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

Эта функция возвращает значение конкретного параметра отчета MyParameter.

=Code.DisplayAParameterValue(Parameters)

Public Function DisplayAParameterValue(

ByVal parameters as Parameters) as Object

Return parameters("MyParameter").Value

End Function

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

Этот пример возвращает значение переданного параметра. Если этот параметр является многозначным, возвращаемая строка представляет собой объединение всех значений.

=Code.ShowParametersValues(Parameters!DayOfTheWeek)

Public Function ShowParameterValues(ByVal parameter as Parameter)
 as String
   Dim s as String 
   If parameter.IsMultiValue then
      s = "Multivalue: " 
      For i as integer = 0 to parameter.Count-1
         s = s + CStr(parameter.Value(i)) + " " 
      Next
   Else
      s = "Single value: " + CStr(parameter.Value)
   End If
   Return s
End Function

Пользовательские сборки

В построителе отчетов 2.0 пользовательские сборки поддерживаются только на сервере отчетов. Дополнительные сведения о доступе к коду после его установки на сервере отчетов см. в разделе «Доступ к пользовательским сборкам с помощью выражений» документации по службам Reporting Services, входящей в состав электронной документации по SQL Server.