在表达式中使用自定义代码引用 (Report Builder 2.0)

可以添加对报表中嵌入的自定义代码的引用。对于自定义常量、复杂的函数,或在一个报表中多次使用的函数,可使用嵌入代码。

对于在运行时计算一次以及希望在整个报表处理期间都保留相同值的时效性计算,请考虑是使用报表变量还是使用组变量。有关详细信息,请参阅在表达式中使用报表和组变量集合引用 (Report Builder 2.0)

自定义代码可包含新的自定义常量、变量、函数或子例程。可以包含对内置集合(例如,Parameters 集合)的只读引用。但是,无法将报表数据值集传递给自定义函数;特别要指出的是,不支持自定义聚合。

嵌入代码

若要将嵌入代码添加到某个报表,请使用**“报表属性”**对话框的“代码”页。创建的代码块可以包含多个方法。嵌入代码中的方法必须采用 MicrosoftVisual Basic 编写,并且必须是基于实例的方法。 对于 System.ConvertSystem.Math 命名空间,报表处理器会自动添加引用。在 Report Builder 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 单步构造该集合。您需要首先知道在报表定义中定义的参数名称,然后才能在代码中引用该参数。但是,可以遍历多值参数的所有值。有关详细信息,请参阅在表达式中使用自定义代码引用 (Report Builder 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

自定义程序集

在 Report Builder 2.0 中,仅在报表服务器上支持自定义程序集。有关将代码安装到报表服务器后访问代码的详细信息,请参阅 SQL Server 联机丛书中 Reporting Services 文档中的“通过表达式访问自定义程序集”。