在 SQL Server Reporting Services 2005 中添加自定义程序集






4.77/5 (9投票s)
如何在 SQL Server Reporting Services 2005 中的报表中添加自定义代码和自定义程序集
引言
SQL Server Reporting Services (SSRS) 是一个非常强大的报表生成工具,SSRS 的重要功能之一是能够添加自定义代码和自定义程序集,以增强报表的功能。
添加自定义代码
我将使用 SSRS 2005。首先,我将为示例报表添加自定义代码。请注意,在为报表添加嵌入式代码时,只能使用 VB.NET。
我将使用 Visual Studio .NET 2005,所以我们开始并打开它,然后从 Business Intelligence Projects 中创建一个新的 Report Server Project,并给它命名为 ReportSample
,然后指定项目位置。
打开 Solution Explorer,选择 Add New Item,选择 Report 模板,并给它命名为 SampleRpt.rdl。
为新创建的报表将显示三个选项卡:Data、Layout 和 Preview。打开 Layout 选项卡,然后转到菜单中的 Report->Report Properties,然后在 Report Properties 窗口中选择 Code 选项卡,在 Custom Code 字段中写入以下内容
Public Function TestFun(ByVal name As String) as String
Return "Welcome "& name
End Function
添加自定义代码后,返回报表布局,从 Toolbox 中将一个文本框拖到报表上,并在文本框中写入以下内容
=Code.TestFun(”M. Abdelghani”)
选择 Preview 选项卡,您应该会看到 Welcome M. Abdelghani。
现在我们完成了向报表中添加自定义代码。您可以将任何函数通过添加到报表属性中的自定义代码字段来添加,但如果我不是用 VB.NET 编写代码,并且我已有多个类,并希望以面向对象的方式使用它们的成员,那么是时候学习如何添加自定义程序集到报表了。
添加自定义程序集
打开一个新的 VS.NET 2005 实例并创建一个新的 Class Library 模板。我将使用 C#,但您也可以使用任何其他语言。给它命名为 TestLib
并指定其位置。
在 Solution Explorer 中将 Class1.cs 重命名为 WelcomeClass.cs,然后打开它,向类中添加以下成员方法
public string TestFun(string name)
{
return "Welcome "+name;
}
public static string StTestFun(string name)
{
return "Welcome "+name;
}
我添加了 static
方法和实例方法到类中,以演示如何从报表中调用它们。现在构建项目,转到项目文件夹并打开 Bin\Debug 文件夹,然后将 TestLib.dll 文件复制到以下文件夹:C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\PrivateAssemblies。
请修改路径以匹配您计算机上 VS.NET 2005 的安装路径。
现在我们将回到我们的 ReportSample
项目。转到菜单,选择 Report->Report Properties,然后打开 References 选项卡。在 References 部分,通过单击浏览按钮添加我们的程序集,并浏览到 TestLib.dll 文件。添加程序集后,在同一个窗口中,转到 Classes 部分,并将类名指定为 TestLib.WelcomeClass
,然后选择一个实例名称为 MyWelcomeClass
。

如果我们要使用实例方法,我们需要添加类名和实例名称。调用 static
方法时,不需要指定类名。现在转到我们报表的布局选项卡,并拖放另一个文本框。我将调用 TestFun
实例方法。要从报表中调用实例方法,您必须指定 WelcomeClass
类的实例,这已经完成,并且我们有一个名为 MyWelcomeClass
的实例。
我们将在新的文本框中写入以下内容
=Code.MyWelcomeClass.TestFun(”M. Abdelghani”)
现在点击报表的预览选项卡。报表上将显示另一个“Welcome M. Abdelghani”。
因此,要从报表中调用实例方法,格式如下
=Code.ClassInstanceName.InstanceMethodName(ListOfParameters)
返回到布局选项卡,并拖放另一个 textbox
,我们将在此处调用我们的 static
方法,我们将在文本框中写入以下内容
=TestLib.WelcomeClass.StTestFun(”M. Abdelghani”)
然后再次切换到预览选项卡。新的 textbox
将显示“Welcome M. Abdelghani”。
因此,要从报表中调用 static
方法,格式如下
=AssemblyName.ClassName.StaticMethodName(ListOfParameters)
现在是时候部署我们的报表项目了。转到 Solution Explorer,选择 ReportSample
项目的属性。
在 ReportSample Property Pages 窗口中
- 将
configuration
设置为 Production。 - 将
StartItem
设置为 SampleRpt.rdl。 - 将
TargetServerURL
设置为您的报表服务器 URL,对我而言:https:///ReportServer。
然后按 Ctrl+F5 部署项目,部署将失败并显示以下错误
Error while loading code module: ‘TestLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’. Details: Could not load file or assembly ‘TestLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. The system cannot find the file specified.
我们将回到 TestLib
类库的项目文件夹,并将 TestLib.dll 复制到以下文件夹
C:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer\bin
请修改路径以匹配您计算机上 SQL Server 的安装文件夹。
现在再次尝试部署 ReportSample
项目,部署将成功。
历史
- 2008年10月30日:首次发布