基于SQL2005的企业报表系统的研究与实现

时间:2022-09-23 10:25:21

基于SQL2005的企业报表系统的研究与实现

摘要:介绍了SQL Server报表服务2005的特点,结合企业报表的需求,采用对RDL文件的修改和对报表服务的数据处理进行扩展的方法,给出了一个在VS环境下利用SQL Server2005中的Reporting Service 实现动态显示Web自定义报表的例子。

关键词:报表服务;SQL2005;报表参数;RDL

中图分类号:TP391文献标志码:A文章编号:1009-3044(2008)12-20ppp-0c

The Research and Implementation of the enterprise Report System Based on SQL2005

HAN Min, YOU Feng, ZHAO Heng-yong

(College of Information Science and Technology, Beijing University of Chemical Technology, Beijing 10029, China)

Abstract:Introduced the characteristic of SQL Server 2005 reporting services. Integrate the demand of enterprise report, uses the method of modifying the RDL document and processing the data of reporting services, giving an example of using Reporting Service of SQL Server2005 to realize dynamic display Web user-defined report under the VS environment.

Key words:Report service; SQL2005; Report Parameter; RDL

1 引言

随着Internet的发展,企业级应用软件逐渐由C/S结构转向B/S结构,企业管理信息系统正逐步由传统的客户端/服务器模式向Internet转移,作为其输出展现端,越来越多的报表将在Web 环境下开发和应用[1]。在企业级的报表解决方案中,不少开发人员采用集成于Visual Studio中的Crystal Report (水晶报表)工具实现,但水晶报表作为第三方开发组件,对其应用时需要编写大量的程序且部署复杂。由于SQL Server的Reporting Services(报表服务)采用集中存储和管理报表、设置策略以确保对报表及文件夹的安全访问、控制处理和分发报表的方式,使在企业业务中使用报表的方式标准化,并且报表服务使报表的设计生成更加容易,具有和Visual Studio集成性好,易于部署,用户的个性化设置灵活的特性,本文提出利用SQL 2005中的Reporting Service 实现企业报表系统的解决方案。

2 Reporting Service简介

Reporting Services是微软在2003年作为SQL Server2000产品套件的一部分的,2005年在SQL Server2005中进行了扩展。SQL Server报表服务是一种基于服务器的新型报表平台,该平台构建在 .NET Framework 2.0 上并与 SQL Server 2005集成在一起,可用于创建和管理包含来自关系数据源和多维数据源数据的表格报表、矩阵报表、图形报表和自由格式报表,可以通过基于 Web 的连接来查看和管理创建的报表,可以使用一个扩展的基于 Web服务的 API 将丰富的报表生成功能集成到应用程序中,因此,Reporting Services 是在各种企业报表开发环境中生成报表的极佳工具。

2.1 RDL

SQL Server2005报表服务定义了一个XML标准RDL(报表定义语言),是一种公开的XML定义报表的格式,因此,可以通过直接编写和修改RDL或者创建自定义工具生成相应的报表格式,满足用户对报表的自定义的需求,达到对报表服务的灵活性扩展。在SQL Server或VS2005环境中,可以使用图形化的制作工具编辑RDL文件。

2.2 Reporting Service的报表设计工具

Reporting Service包括两个报表设计工具:报表生成器和报表设计器。在企业级报表系统的应用中可针对不同的报表需求,选择相应的报表设计工具。

报表生成器是一个在互联网上的Windows客户端应用程序,可以基于报表模型生成报表,报表生成器使用了智能客户端技术,在不必了解基础数据库、报表定义及Reporting Service存储报表的方式情况下,可以使用报表模型实时生成报表。

报表设计器是一种用于创建和报表定义的工具。通过报表设计器可以访问所有报表定义功能。报表设计器提供了图形化的设计界面,可以在其中定义数据源和查询信息,利用其提供的报表项进行报表格式的设计,添加要显示的数据源字段。在报表设计器中通过对相应的报表项设置不同数据来源参数的方式,实现用户自定义报表格式和对报表数据的动态查询。

2.3 报表管理器

在SQL Server2005报表服务中,报表管理器是包含于报表服务中的一个基于Web 的管理应用程序,它使用和Web 服务API的报表服务器的界面创建。报表管理器应用程序驻留在Web 服务器上并且为Web 浏览器访问,为报表服务器数据库中的内容提供一个管理界面,在报表管理中可以完成用户对报表访问的安全设置、站点设置、文件夹的处理、报表属性设置及报表数据源的处理等应用。可以通过报表服务自身提供的报表服务器的URL访问报表管理器页面,实现企业级报表的Web 管理,也可以通过创建一个利用相同报表服务Web 服务API的应用程序来创建企业要求的自定义的报表管理器[2]。

3 企业报表系统的方案设计及实现原理

3.1 企业报表系统的实现技术。

为了满足企业级Web 报表系统的性能需求,其技术方案如图1所示:

3.2 企业报表系统实现原理

为了实现自定义报表,本文设计了基于 和SQL Server报表服务2005的Web 自定义报表模型:建立报表格式信息数据库和报表数据信息数据库,通过访问数据库。报表数据采用 DataSet作为数据源绑定,根据SQL Server报表服务2005提供的数据处理接口在Visual Studio2005中编写代码实现数据集的动态绑定[3]。对SQL Server报表服务2005进行参数设置实现报表格式的自定义。首先,在根据企业的应用需求确定报表表格的自定义参数,即对报表服务的报表项(表、文本框、列表、图像和矩形等)建立参数表;其次,对报表的数据处理进行扩展应用,根据查询排序等设置从数据库中提取数据,动态生成DataSet数据源,在中,将 DataSet 动态绑定到报表显示控件ReportView; 最后,在中,对ReportView控件编写代码实现对SQL 2005的报表服务的访问。实现原理如图2所示。下面结合实例讲解企业自定义报表的实现。

3.3 报表格式的自定义

SQL Server报表服务2005的报表模板格式的自定义可以由以下两种方式实现。第一种是在报表服务外部,通过XML文档的修改实现报表的自定义,此方式对熟悉XML语言的用户适用。第二种方式针对不熟悉报表开发环境的一般用户,通过选择相关报表格式参数的方式实现报表模板格式的自定义。

修改XML 文档实现报表的自定义,可以在Visual Studio 环境下选择SQL Server Business Intelligence Development Studio,通过创建报表项目在报表设计器窗体以图形化界面的方式对报表模板进行定义,或者选择报表向导的方式完成对报表模板的定义。由于定义报表的RDL文件是一个XML文档,该XML文档具有报表所有属性的标记选项卡的标准定义,报表设计元素的属性值可以用一个文本编辑器修改,因此可以在报表服务器外部通过修改编写符合报表定义的XML文件或修改已有的XML文件的方式实现报表模板的自定义[4]。

修改报表格式参数实现报表格式的自定义,在定义报表时,可以对组成报表的报表项通过对ReportParameter属性的操作,即对构成报表的文本框、表格、矩形、列表、图像等进行相应得参数设置,这些参数可通过表达式设置,也可以通过查询数据库中的报表参数信息进行设置,从而实现用户选择相应的报表参数完成报表格式的自定义。

3.4 报表数据处理

在报表设计器中,通过对数据库查询设置报表数据集。区别于.NET中的数据集,报表服务中的数据集指一个查询表达式或一个用于查询数据库中对象的引用,包括在报表的定义中。可以在定义数据集的查询中设置参数,也可以在存储过程中定义参数实现数据筛选,参数项可以由一个静态列表或者一个数据驱动的查询填充,从而实现用户选择不同的参数对报表的各种查询显示[5]。根据SQL Server报表服务2005提供的数据处理接口,通过访问数据库,报表数据采用 DataSet作为数据源绑定,在Visual Studio2005中编写代码实现数据集的动态绑定。

3.5 报表的显示输出

SQL Server报表服务2005 能够集成到不同的应用程序中,且具有不同的显示报表的方法:使用URL来访问报表,使用报表服务的Web服务以编程的方式显示报表,使用ReportViewer控件显示报表和使用SharePoint显示报表。本文采用ReportViewer控件显示报表的方式实现报表的显示,该显示方式可以完成在显示页面中的浏览、打印、保存、查询、翻页等功能。由于ReportViewer是客户端控件,可以使用来自任何数据源的数据,既可在Windows窗体使用,也可在Web窗体使用,故根据企业报表显示的需求,采用在Web 窗体使用ReportViewer实现报表的显示输出。首先,将定义好的报表添加到 应用程序中,打开Choose Toolbox Items检查ReportViewer控件,将其添加到引用中。其次,在Web窗体上添加ReportViewer控件和其他输出页面进行交互的控件如标签和下拉列表框等。最后,设置ReportViewer的ReportPath和ReportServerUrl属性,并编写相应代码完成报表参数的传递,参数作为RportParameter对象数组来管理,报表参数通过传递给ServerReport对象的SetParameters方法的数组来填充。其部分代码如下所示:

private void ViewReport()

{

string sReportServerURL = "LocalHost/ReportServer";

string sReportPath ="/Professional SQL Reporting Services/enterprise report ";

Microsoft.Reporting.WinForms.ReportParameter[] Param;

Param[0] =newMicrosoft.Reporting.WinForms.ReportParameter

("OrderDateFrom", this.dtOrderDateFrom.Value.ToString());

Param[1]

=newMicrosoft.Reporting.WinForms.ReportParameter

("OrderDateTo",this.dtOrderDateTo.Value.ToString());

reportViewer1.ProcessingMode =

Microsoft.Reporting.WinForms.ProcessingMode.Remote;

reportViewer1.ServerReport.ReportServerUrl

= new Uri(sReportServerURL);

reportViewer1.ServerReport.ReportPath = sReportPath;

reportViewer1.ServerReport.SetParameters(Param);

reportViewer1.ShowParameterPrompts = false;

reportViewer1.ShowPromptAreaButton = false;

reportViewer1.RefreshReport();

}

4 结束语

本文提出的在.NET平台下利用SQL Server2005中的报表服务实现企业报表系统的方案,满足了企业对报表灵活设置参数实现对某些报表项的自定义和易于更新和维护的需求。该方案适用于在.NET 平台下生成各类企业报表。由于SQL Server报表服务和SQL数据库结合的紧密并且具有很好的扩展性,以及对企业商业智能(BI)的支持,可进一步从数据处理扩展、交付扩展、显示扩展和安全扩展等领域延伸企业报表系统的应用。

参考文献:

[1]张亚平、贺占庄,B/S架构下动态报表的一种实现方式[J],计算机技术与发展,2007,17(4):93-95,103.

[2]paul Truly 、谢文亮(译),SQL Server2005报表服务高级编程[M],北京:清华大学出版社,2007.

[3]陈传波、黄刚、刘清慧,一种基于的自定义报表的设计与实现[J],计算机工程与科学,2006,28(6):112-114.

[4]菅言彬,基于XML的Web智能报表的研究与实现[D],华北电力大学,2005.

[5]刘福军、申永军、刘杰、史维祥,存储过程和OLE技术在报表设计中的应用[J],计算机与现代化,2003,(3):73-75,7.

收稿日期:2008-03-27

作者简介:韩敏(1978-),女,内蒙古鄂尔多斯人,硕士研究生,主要研究领域为过程工业监测平台;尤枫(1963-),男,辽宁沈阳人,硕士,讲师,主要研究领域为信息安全技术、软件开发自动化;赵恒永(1940-),男,河北保定人,教授,主要研究领域为企业实时信息系统平台、生产过程控制、数据挖掘与智能决策。

上一篇:Ajax基本原理及其Web应用探讨 下一篇:基于Web服务的农业信息共享平台设计