65.9K
CodeProject 正在变化。 阅读更多。
Home

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

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.77/5 (9投票s)

2008年10月30日

CPOL

4分钟阅读

viewsIcon

69383

downloadIcon

1

如何在 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日:首次发布
© . All rights reserved.