如要在报表中使用自定义程序集,您必须先创建程序集,使其可供报表设计器使用,然后在报表中添加对该程序集的引用,最后在报表中使用表达式来引用该程序集中的方法。
如果报表部署到报表服务器,您还必须向报表服务器部署该自定义程序集。
布署步骤:
1.把自己写的自定义的程序集拷贝到以下目录:
1)报表服务器的目录.默认目录为 C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportServer\bin.
2)vs 2005的安装目录下.默认目录为: C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies.
2.如果你的程序集代码需要运行权限,请打开以下目录下的适当的配置文件.(这一步不是必须的.)
报表服务器,默认目录为 C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer.
vs 2005安装默认目录为 C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies.
3. 向报表添加程序集引用
1)在“报表”菜单上,单击“报表属性”。
注意:
如果“报表”菜单不可用,请单击报表设计区域。
2)在“引用”选项卡上,执行以下操作:
a)在“引用”中,单击添加按钮 (...),然后在“添加引用”对话框中选择或找到程序集。
b)在“类”中,键入类的名称并提供要在报表中使用的实例名。
注意:
仅为基于实例的成员指定类名称和实例名。请不要在“类”列表中指定静态成员。
使用:
若要在表达式中引用自定义代码,您必须调用自定义程序集中某个类的成员。
调用方式取决于该方法是静态方法还是基于实例的方法。
1. 自定义程序集中的静态方法可在报表内全局使用。您可以在表达式中通过命名空间、类和方法名称来访问静态方法。
下面的示例调用 ToGBP 方法,该方法将 StandardCost 字段的值从美元转换为英镑:
=CurrencyConversion.DollarCurrencyConversion.ToGBP(Fields!StandardCost.Value)
2. 基于实例的方法可通过全局定义的 Code 成员使用。
您可以通过先引用 Code 成员,再引用实例和方法名称,来访问这些方法。
下面的示例调用实例方法 ToEUR,该方法将 StandardCost 字段的值从美元转换为欧元:
例1
=Code.m_myDollarCoversion.ToEUR(Fields!StandardCost.Value)
例2:时间差计算并进行格式转换
=Code.mydate.DateTimeDiff(Fields!StartLoadTime.Value,Fields!FactArriveTime.Value,"hhMM")
注意:
在报表设计器中,除非您关闭 Visual Studio,否则一旦加载自定义程序集,就不会卸载该程序集。
如果预览报表后对报表所用的自定义程序集进行更改,然后再次预览该报表,则第二次预览结果中不会体现所做的更改。
若要重新加载程序集,请关闭 Visual Studio,再将其重新打开,然后预览报表。
可以参考以下文章
http://blogs.gotdotnet.com/swisowaty/archive/2006/06/21/641734.aspx