[收藏]利用SQL Server Reporting Services 从应用程序生成用户友好的报表
2007-11-11 11:46:18 来源:WEB开发网使用 Reporting Services Web 服务
到目前为止,我一直使用的 URL 访问方法提供了一种快速便捷的方式来查看报表并指定参数,但是它不能提供对所有可用的报表管理功能的访问。Reporting Services 还附带了一个具有丰富功能的 API,为您提供通过 Web 服务对高级功能的访问。例如,该 Web 服务包括用于管理报表的数据源信息的方法或者枚举某个文件夹中所有项的方法。
我将使用 Web 服务将报表的动态列表添加到仪表板应用程序中。为此,您将需要使用 Add Web Reference 将一个 Web 服务引用添加到应用程序中。指定到 Web 服务的路径,如下所示:
http://MyServer/ReportServer/ReportService.asmx
在添加引用后,您可以创建 ReportingService 代理类的一个实例,并调用该服务上的一个方法,就像我在此处完成的一样:
Private Sub LoadSampleReports() Dim rs As New ReportingService rs.Credentials = System.Net.CredentialCache.DefaultCredentials Dim item As CatalogItem For Each item In rs.ListChildren("/SampleReports", False) If item.Type = ItemTypeEnum.Report Then DropDownList1.Items.Add(New ListItem(item.Name, item.Path)) End If NextEnd Sub
如果您正在一个 Intranet 环境中部署应用程序,您要通过将 添加到应用程序的 web.config 文件中来启用模拟。您还要将客户端登录凭据传递到该服务,如前面的示例所示。
listchildren 方法返回 CatalogItem 对象的数组,该数组表示用户有权查看的项,包括报表、文件夹和数据源。Path 属性提供了到项的唯一路径,例如,/SampleReports/Sales Order Detail,Type 属性使您可以区别报表和其他类型的项。
既然我已经将报表名称加载到了下拉列表中,我必须决定如何在仪表板应用程序内显示报表。我决定扩展我早期编写的 ReportViewer 代码并且只要用户选择某个报表并点击“Go”按钮就更改 ReportPath 属性。您还可以使用 IFRAME 并将 SRC 设置为适当的 URL(并为报表的名称加上前缀“http://myserver/ReportServer?”)。
除了报表管理功能外,web 服务提供的其他主要功能就是报表呈现。大多数应用程序(包括报表管理器应用程序)都使用 Web 服务功能来列出报表或更改设置,并使用我介绍过的 URL 方法来显示报表。但是,如果您想要完全控制报表内容在应用程序中处理的方式,可以使用 ReportingService 类的 Render 方法。该方法返回一个可以在以后保存到输出文件的字节数组;取决于请求的格式,输出文件可以是图形文件或 Excel 电子表格。如果您要以 HTML 格式呈现报表,可能会更加复杂一些,因为您将需要使用 RenderStream 方法来分别呈现图像或其他资源。
尽管本文的讨论重点在于 Web 应用程序,您也可以使用相同的技术将报表生成功能添加到基于 Windows 的应用程序中。最简单的方法仍是使用 URL 访问,或者从应用程序启动用户的浏览器,或者包括 Microsoft WebBrowser ActiveX? 控件并使用 Navigate 方法来加载适当的 URL。当您想要更好地控制某些操作(例如,在图片框中显示结果或将文件直接保存到磁盘的操作)时,Web 服务的 Render 方法是一个很好的备选方法。
信息工作者通常必须处理两种类型的报表:当他们需要收集信息时他们想要获得的类型以及每周都出现在他们桌面上或他们电子邮件中的类型。至此,我已重点阐述了用户获取他们自己的报表的过程,但 Reporting Services 还包括一种非常强大的称为订阅的功能,它使您可以将报表“推”给客户。
更多精彩
赞助商链接