Использование в выражениях ссылок на пользовательский код (службы 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)
Примечание. |
---|
В конструкторе отчетов пользовательская сборка загружается один раз и не выгружается до тех пор, пока не будет закрыта среда Visual Studio. Если при предварительном просмотре производятся изменения использованной в отчете пользовательской сборки, а затем отчет просматривается снова, то при повторном открытии отчета для предварительного просмотра изменения отображаться не будут. Для перезагрузки сборки закройте, а затем повторно откройте среду Visual Studio, а потом производите предварительный просмотр. |
См. также
Другие ресурсы
Использование выражений в службах Reporting Services
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
14 апреля 2006 г. |
|
5 декабря 2005 г. |
|