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


Использование в выражениях ссылок на пользовательский код (службы Reporting Services)

Изменения: 14 апреля 2006 г.

К отчету можно добавлять пользовательские функции или ссылки на функции, которые существуют во внешних сборках. Сервер отчетов автоматически добавляет ссылки для сборок Microsoft.VisualBasic, System.Convert и System.Math. С помощью диалогового окна Свойства отчета или элемента CodeModules в определении отчета можно создать ссылки на дополнительные сборки.

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

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

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

Чтобы использовать код в отчете, необходимо добавить в отчет блок кода. Этот блок кода может содержать несколько методов. Методы во внедренном коде должны быть написаны на языке Microsoft Visual Basic и основываться на экземпляре.

Дополнительные сведения о добавлении кода в отчет см. в разделе Как добавить код в отчет (конструктор отчетов).

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

=Code.ToUSD(Fields!StandardCost.Value)

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

=Report.Parameters!Param1

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

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

Следующий пример содержит ссылку на код и код реализации функции FixSpelling, которая заменяет Bicycle для всех вхождений текста Bike на значение поля SubCategory.

=Code.FixSpelling(Fields!SubCategory.Value)

Следующий код показывает реализацию метода FixSpelling при его внедрении в определение отчета. При первом запуске этого пользовательского кода окно сообщений отображает заменяемый текст. Этот пример демонстрирует создание ссылок на классы Microsoft .NET Framework StringBuilder и System.Windows.Forms.MessageBox. К свойствам отчета необходимо добавить ссылку для коллекции System.Windows.Forms. Дополнительные сведения см. в разделах Как добавить код в отчет (конструктор отчетов) и Как добавить в отчет ссылки на сборку (конструктор отчетов).

Dim firstTime As Boolean = True 
Public Function FixSpelling(ByVal s As String) As String
   Dim strBuilder As New System.Text.StringBuilder(s)
   If s.Contains("Bike") Then
      strBuilder.Replace("Bike", "Bicycle")
      If firstTime Then
        System.Windows.Forms.MessageBox.Show(strBuilder.ToString())
'       or MsgBox(strBuilder.ToString())
        firstTime = False
      End If
      Return strBuilder.ToString()
      Else : Return s
   End If
End Function

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

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

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

Дополнительные сведения о создании пользовательской сборки и предоставления к ней доступа для служб Reporting Services см. в разделе Using Custom Assemblies with Reports. Инструкции о добавлении ссылки в отчет см. в разделе Как добавить в отчет ссылки на сборку (конструктор отчетов).

Для ссылки в выражении на пользовательский код следует вызвать элемент класса этой сборки. Способ создания ссылки зависит от того, является ли метод статическим или основывается на экземпляре. Статические методы в пользовательской сборке доступны из всех элементов отчета. В выражениях можно получить доступ к статическим методам с помощью указания пространства имен, класса и имени метода. В следующем примере производится вызов метода ToGBP, который преобразует значения поля StandardCost из долларов в фунты стерлинги:

=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)

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

=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)
ms155798.note(ru-ru,SQL.90).gifПримечание.
В конструкторе отчетов пользовательская сборка загружается один раз и не выгружается до тех пор, пока не будет закрыта среда Visual Studio. Если при предварительном просмотре производятся изменения использованной в отчете пользовательской сборки, а затем отчет просматривается снова, то при повторном открытии отчета для предварительного просмотра изменения отображаться не будут. Для перезагрузки сборки закройте, а затем повторно откройте среду Visual Studio, а потом производите предварительный просмотр.

См. также

Другие ресурсы

Использование выражений в службах Reporting Services

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Новое содержимое
  • Дополнительные примеры.

5 декабря 2005 г.

Новое содержимое
  • Добавлена ссылка на объект Report для глобальных коллекций