您可以向报表添加自定义函数,也可以添加对外部程序集中函数的引用。编译项目时,将自动引用下列程序集:Microsoft.VisualBasic、System.Convert 和 System.Math。使用“报表属性”对话框或报表定义中的 CodeModules 元素可以引用其他程序集。还可以使用“报表属性”对话框来定义自定义函数。若要在报表定义中定义自定义函数,请使用 Code 元素。请注意,无法向函数传递数据值集(特别要指出的是,不支持自定义聚合)。

可以编写自定义代码,在整个报表的表达式中使用。编写自定义代码有两种方法:在报表中嵌入代码或引用自定义程序集中的方法。对于复杂函数或在一个报表中多次使用的函数,使用嵌入代码。使用自定义程序集可在一个位置维护代码并在多个报表中共享该代码。

嵌入代码

若要在报表中使用代码,请将代码块添加到报表中。此代码块可以包含多个方法。嵌入代码中的方法必须以 Microsoft Visual Basic 编写,并且必须基于实例。

将代码添加到报表

  1. 在“报表”菜单上,单击“报表属性”。

    注意

    如果“报表”菜单不可用,请单击报表设计区域。

  2. 在“代码” 选项卡的“自定义代码”中,键入代码。

嵌入代码中的方法可通过全局定义的 Code 成员使用。您可以通过引用 Code 成员和方法名称来访问这些方法。下面的示例调用了 ToUSD 方法,该方法将 StandardCost 字段值转换为美元值:

=Code.ToUSD(Fields!StandardCost.Value)

自定义程序集

若要在报表中使用自定义程序集,必须先创建程序集,使其可供项目使用,然后在报表中添加对该程序集的引用,最后在报表中使用表达式来引用该程序集中的方法。将报表部署到报表服务器后,还必须将自定义程序集部署到报表服务器。

将程序集引用添加到报表

  1. 在“报表”菜单上,单击“报表属性”。

    注意

    如果“报表”菜单不可用,请单击报表设计区域。

  2. 在“引用”选项卡上,执行下列操作:

    • 在“引用”选项卡中,单击添加 (...) 按钮,然后在“添加引用”对话框中选择或浏览到程序集。

    • 在“类”中,键入类名并提供要在报表中使用的实例名。

      注意

      仅为基于实例的成员指定类名和实例名。不要在“类”列表中指定静态成员。

若要在表达式中引用自定义代码,必须调用程序集中的某类成员。调用方式取决于该方法是静态的还是基于实例的。自定义程序集中的静态方法可在整个报表中使用。您可以在表达式中通过命名空间、类和方法名称来访问静态方法。下面的示例调用了 ToGBP 方法,该方法将 StandardCost 字段的值从美元转换为英镑:

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

基于实例的方法可通过全局定义的 Code 成员使用。您可以通过依次引用 Code 成员、实例和方法名称来访问这些方法。下面的示例调用了 ToEUR 实例方法,该方法将 StandardCost 字段值从美元转换为欧元:

=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)

注意

在报表设计器中,自定义程序集一经加载就不会被卸载,除非关闭 Visual Studio。如果预览报表后对该报表所用的自定义程序集进行更改,然后再次预览该报表,则第二次预览结果不会体现所做的更改。若要重新加载程序集,请关闭 Visual Studio,再将其重新打开,然后预览报表。

若要了解有关使用自定义程序集的详细信息,可以在 SQL Server 2005 联机丛书中搜索“在报表中使用自定义程序集”。Visual Studio 2005 的大多数版本都有联机丛书。您还可以在 www.microsoft.com 的 MSDN 上进行查看。联机丛书中有关自定义程序集的信息适用于使用 ReportViewer 控件部署的报表。


本文转载:CSDN博客