在 Crystal Reports for Visual Studio 中,可以用 Web 服务的形式发布 Crystal 报表。
Web 服务是什么?
Web 服务让不同的应用程序能够共享它们的数据和功能。例如,记帐系统可以连接到客户订购系统。公司也可以使用 Web 服务来和其他公司共享数据和应用程序的功能。
Web 服务独立于任何特定组件技术或对象调用约定,原因如下:
- 它们使用 HTTP 作为 Web 协议。
- 它们基于 XML。
- 它们支持安全套接字层 (SSL)。
采用任一编程语言为任一组件模型和操作系统编写的程序都可以访问 Web 服务。
Crystal Reports 使得将报表作为报表 Web 服务发布和使用变得很轻松。Web 和 Windows 应用程序能够连接到报表 Web 服务并显示此服务提供的 Crystal 报表。
如何将报表作为报表 Web 服务发布
在 Crystal Reports for Visual Studio 中,如果选择将 Crystal 报表发布到报表 Web 服务的选项,报表 Web 服务将被编译为 DLL,它将生成一个带有 .NET Web 服务文件扩展名“.asmx”的 XML 文件。该 ASMX 文件描述由该报表 Web 服务提供的公共函数、输入参数、数据类型以及返回数据类型。DLL 和 ASMX 文件均在 Web 服务器上作为报表 Web 服务发布。这样,Web 浏览器上的客户端就可以通过调用 Web 服务的 URL 来调用该报表 Web 服务。数据则以 XML 的形式通过 HTTP 传出或传入 Web 服务。
如何在客户端将报表作为报表 Web 服务文件使用
要从客户端应用程序访问已发布的报表 Web 服务,必须将来自网站或 Windows 项目的 URL 字符串传递给 CrystalReportViewer 控件的 ReportSource 属性。
发布报表 Web 服务
启动 Visual Studio。
从“文件”菜单中,选择“新建”,然后单击“网站”。
从“新建网站”对话框的“项目类型”列表中,为 C# 或 Visual Basic 选择一个语言文件夹。
在 Visual Studio 已安装的模板”列表中,单击“ASP.NET Web 服务”。
在“位置”字段中,输入 Web 服务目录的文件目录路径和名称。
C:\WebServices\MyCrystalReportsWebServices单击“确定”。
在“解决方案资源管理器”中,右击粗体显示的项目名,然后选择“添加现有项...”。
在“添加现有项”对话框中,将“文件类型”设置为“所有文件 (*.*)”。
找到 Crystal Reports 示例报表目录的“Feature Examples”文件夹中的“Hierarchical Grouping.rpt”文件。
这个 Hierarchical Grouping 报表将从 Access 数据库 xtreme.mdb 中检索数据。如果尚未验证此数据库的位置及其 ODBC DSN 配置,请参见“需要验证的事项”。
单击选中“Hierarchical Grouping.rpt”文件,然后单击“添加”。
Hierarchical Grouping.rpt 文件随即添加到项目中。
右击报表并选择“作为 Web 服务发布”。
将创建名为 Hierarchical GroupingService.asmx 的新服务。
右击 Hierarchical GroupingService.asmx 并选择“设为起始页”。
现在,您就可以生成并测试您的报表 Web 服务了。
生成、测试和获取发布的报表 Web 服务的 URL
从“生成”菜单中选择“生成解决方案”。
如果生成过程中出错,请立即纠正。
从“调试”菜单中,单击“开始”。
Hierarchial_GroupingService ASMX 文件将显示在 Web 浏览器中。
从浏览器中复制 URL。
注意在 Visual Studio 2005 和更高版本中,默认情况下并不使用 IIS 来预览网站和 Web 服务,而是使用 Visual Web Developer Web Server 作为默认 Web 服务器。在使用此 Web 服务器时,URL 仅包含一个临时的随机端口号,该端口号仅在编译时有效。要从客户端应用程序访问此 Web 服务 URL,必须先配置此 Web 服务项目的文件目录,以作为 IIS 中的虚拟目录。该虚拟目录将提供一个能从客户端应用程序调用的一致的 URL。
接着将创建一个客户端项目以访问报表 Web 服务。
从客户端项目使用报表 Web 服务
此过程仅适用于已通过“项目设置”创建的项目。“项目设置”包含此过程需要的特定命名空间引用和代码配置。如果没有该配置,将无法完成此过程。因此,在开始此过程之前,必须首先执行“项目设置”中的步骤。
打开 Web 或 Windows 窗体。
从“视图”菜单中,单击“代码”。
在 ConfigureCrystalReports() 方法(在“项目设置”一节中创建)中,将一个报表 Web 服务 URL 字符串(在前一步骤中创建)赋给 CrystalReportViewer 类的 ReportSource 属性。
myCrystalReportViewer.ReportSource = "https://localhost/MyCrystalReportsWebService/Hierarchical_GroupingService.asmx"crystalReportViewer.ReportSource = "https://localhost/MyCrystalReportsWebService/Hierarchical_GroupingService.asmx";