.NET环境下水晶报表的设计与实现

2013-12-10 14:07广州市机电高级技工学校余楷鑫
电子世界 2013年4期
关键词:程序员数据源水晶

广州市机电高级技工学校 余楷鑫

广州轻工职业学校 刘魁元

一、水晶报表的模式

水晶报表是开发数据报表的利器,在.NET平台做过报表开发的程序员,一定都对水晶报表强大的报表设计功能留下深刻的印象。运用水晶报表进行开发,能够大大简化数据报表开发的难度,减少开发的工作量,其良好的接口功能,使得程序员在开发与维护过程中,往往能够取得事半功倍的效果。水晶报表在应用时分两种方法,分别是拉模式(PULL)、推模式(PUSH)。下面将介绍水晶报表的这两种模式。

1.水晶报表的拉模式

水晶报表的拉模式是指直接从数据库获取数据,利用水晶报表的接口来实现报表展示,基本上不用手动编写代码。该种模式只需要调整模版就可以设计好水晶报表,与数据的连接和执行SQL命令都是交水晶报表来完成,其表现如图1所示。拉模式适用于不需要对数据库(或数据文件)中的数据进行额外的处理(如数值计算等)的情况,其优点是设计时非常方便,可以随时对设计的情况进行预览,但在应用程序部署时则比较繁琐(如需要设定数据库连接的数据源及驱动)。

在拉模式下,只要按照报表专家的向导来操作,水晶报表直接根据指定的驱动连接数据库然后组装这些数据,不需要开发人员编写代码。但是其缺点也是显而易见的,用拉模式设计的水晶报表在运行环境或者数据库变动时,其调整比较麻烦。另外在设计与实现上,拉模式的灵活性不足也是存在的一个问题,作为程序员,该模式是不被喜欢的,所以本文并不推荐使用水晶报表的拉模式。

2.水晶报表的推模式

水晶报表的推模式也是需要获取数据库里的数据后在设计好的模板中展示出来,所不同的是推模式能够灵活的按照程序员的设想实现复杂的水晶报表,而且在维护上更加的便利,一定程度上降低了与数据库的耦合度。其表现形式如图2所示。在推模式中编程组装的Dataset里的SQL语句中的字段要与水晶报表里的SQL语句字段一致。

图1

图2

在水晶报表的推模式实现上,开发人员要编写相应的查询代码与报表中的字段相匹配,并且代码中的数据库表也要跟水晶报表中的保持一致,不然水晶报表便显示不出数据,笔者在这一点上曾经吃过亏,调试了很久才发现这一疏漏。在简单的水晶报表实现上,相信有过这方面开发的人都有一定了解,但是涉及到多数据表展示在同一张打印报表上时,未必就有人知道了,本文接下来将介绍如何解决多报表打印这一问题。

二、如何利用水晶报表推模式实现多数据源绑定

通过以上分析,程序员在设计开发水晶报表的时候,以推模式来实现更加的符合实际项目的要求,笔者将通过一个学生学籍报表来介绍水晶报表推模式的实现步骤。

(1)实现的工具采用Visual Studio 2008,数据库选择SQL Server 2005,水晶报表则为Visual Studio 2008自带的10.5版本。

(2)在项目底下新建一个StuReport.aspx的页面,在该页面中放置查询条件,并在工具箱的报表栏中拖入CrystalReportViewer和CrystalReportSource控件到页面中,前台主要代码如下:

如果是多个数据源的话,仿照上面将数据库中的数据读取到dataset中,这里需要注意的地方是Fill数据集的时候表名要和水晶报表中的保持一致。如果数据报表中需要显示图片的话,必须将图片转化为二进制流的形式,因为vs 2008集成的水晶报表10.5只支持二进制流的形式。

(3)在同一目录下新建一个student.xsd的页面,创建数据库字段的映射,该页面是利用xsd标记语言建立的。实际上,xsd可以认为是一个数据中介,介于报表模板与数据之间。建成数据集,有三个数据库表,分别为STU_V_StuInfo、STU_V_Family、STU_T_ConductReview,这三个表的表名对应上面提到的dataset填充名。

(4)接下来便是设计水晶报表页面,首先便是绑定上面所示的数据源xsd文件,点击字段资源管理器—数据库字段,右键点击数据库专家。在数据库文件中选择我们创建的student.xsd文件。

设计数据报表:因为是多数据源展示到同一数据报表中,所以需要插入子报表。学生信息模块为主报表,家庭成员模块和操行评定模块为子报表。

点击主报表,右键—插入--子报表,选择链接标签,这里需要注意的地方是:主报表与子报表必须通过学生ID进行关联,这样才能使报表读到的学生信息是同一个学生ID的信息。子报表中的字段设置方法与主报表一样。

设计完报表,我们就可以运行我们所设计的报表界面。

三、结束语

学校学生学籍打印是学校学生管理系统的一项重要功能,运用水晶报表来进行学籍打印,能够大大减少学籍管理员的工作量。本文利用水晶报表来解决这一问题,希望能给大家提供借鉴与参考。

[1]滕永富,孙振龙,田丽军,薛仁政.基于Web的研究生管理信息系统的设计与实现[J].齐齐哈尔大学学报(自然科学版),2010(03).

[2]李涛,屈展.基于.NET的Web动态报表研究与实现[J].科技资讯,2008(03).

[3]雷筱珍.水晶报表数据来源之.NET对象应用技巧[J].福建电脑,2010(11).

[4]张龙强.一种.NET下报表打印的方法与实现[J].电脑知识与技术,2010(19).

[5]石俊萍.基于C#水晶报表数据源动态绑定的实现[J].电脑与电信,2009(05).

[6]洪颖.基于.net平台下不同模式水晶报表的研究与实现[J].计算机与信息技术,2009(12).

[7]莫丽萍.基于.NETB/S模式中水晶报表打印与套打的实现[J].农业网络信息,2008(11).

猜你喜欢
程序员数据源水晶
为了让妈妈看懂地图,一位“野生程序员”做了个小程序
一张水晶卡告诉你浪漫都在哪
怎样成为一名优秀程序员
迈向UHD HDR的“水晶” 十万元级别的SIM2 CRYSTAL4 UHD
蓝水晶般的大眼睛
Web 大数据系统数据源选择*
程序员之子
寇准与水晶饼
基于不同网络数据源的期刊评价研究
加班