基于c#图书馆管理系统 基于C#的水晶报表的数据集架构研究及应用
摘要:在.NET平台下,推模式的水晶报表能完成对数据库的动态条件查询,针对推模式的水晶报表的数据集的架构方式进行讨论和实现,从而实现使用不同方法创建的数据集架构完成水晶报表动态数据绑定。
关键词:水晶报表;数据集;推模型;数据库;存储过程
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)17-4115-04
Design and Realization of Crystal Reports Dataset Structure Based on the C#
DONG Shu-juan, ZHANG Rui-qing
(Yellow River Conservancy Technical Institute, Kaifeng 475004, China)
Abstract: In the.net flat, the push model of crystal reports can finish to the database query dynamic conditions, according to the mode of crystal reports push dataset structure to carry on the discussion and the realization way, so as to realize the different ways to create datasets structure complete crystal reports dynamic data binding.
Key words: crystal report; dataset; push model of crystal report; database; procedure
在信息管理软件的开发中,往往要根据客户的要求将数据库中的数据进行动态检索[1]显示并打印。不同的客户往往需要不同结构的数据,对着客户对数据的需求日渐复杂,数据的显示增加程序开发的难度和成本。水晶报表的使用大大降低了数据显示的开发难度。
1水晶报表的两种模式
1.1拉模型(Pull)
在拉模型[2]中,驱动程序直接连接到数据库将需要的数据“拉”进来,而不需要有数据集的架构。使用这种模型时,与数据库的连接和为了获取数据而执行的SQL命令都同时由Crystal Reports本身处理,不需要开发人员编写有关数据的代码。这种情况适合于对数据库中的记录进行简单浏览,不需要进行复杂检索的情况。
1.2推模型(push)
推模型[3]需要开发人员编写代码以连接到数据库,执行SQL命令以创建与报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。在该模式下,需要建立数据集架构。
2推方式下水晶报表的数据集架构的方式及使用
推模式下水晶报表的数据模式有很多种,在系统项目中,往往使用数据库提供项目数据,在Microsoft Visual Studio2008中,如何获取水晶报表的数据集架构是设计水晶报表成败的关键。下面使用2种方法进行介绍。
这里使用学生选课以及成绩的信息的数据库student对3种方式进行描述。包括三张表。学生表(学号,姓名,性别,班级,系别),课程表(课程号,课程名,任课教师,课程开设学期),学生选课表(学号,课程号,分数,考试次数)。
为了介绍水晶报表的2种数据集架构方式,建立Windows应用程序,并在窗体上添加一个用于显示水晶报表的报表浏览器crys? talReportViewer1对象,最终根据学号在水晶报表上显示具体的成绩信息。
2.1在空数据集设计器中添加表结构
这种方法实现时创建一个空的数据集架构,然后添加使用的表的字段。实现步骤如下。1)在项目中添加空的数据架构“DataSet1.xsd”,实现方法与上述数据集添加方法相同。2)在空的数据集设计器中添加表结构。如图4。在数据集设计器中单击鼠标右键,依次选择“添加àDataTable”。添加一张表,命名为“studentsc”,然后单击“
3推方式下不同数据集架构的水晶报表实现
无论哪种数据集架构,实现推方式的水晶报表最重要的是数据信息即水晶报表数据源的获取[5],这里通过解决动态的获取某一个学生的选课情况做为水晶报表要显示的信息进行说明。
1)创建一个Windows窗体应用程序app1,添加窗体Form1、Form2,将Form1设为程序的登录窗体,并将学生的学号通过Form2的构造函数[6]传递给用于显示水晶报表的窗体Form2。在窗体Form2中添加字段成员stuno,用于接收学生的学号,窗体Form2的构造函数如下。
4结束语
两种不同的数据集架构使用时各有优点。当水晶报表需要的数据比较复杂时,使用存储过程建立报表的数据集能避免数据集中报表字段与数据源中的字段不一致,并且能使用存储过程的调用获取数据源,这样将一举两得;当水晶报表的数据比较简单时,使用添加表结构能避免建立数据库连接。
参考文献:
[1]石俊萍.基于C#水晶报表数据源动态绑定的实现[J].电脑与电信,2009(5):21-22.
[2]任文.水晶报表的应用[J].硅谷,2008(4):44-45.
[3]王宁,王亚飞,刘亮亮.基于.NET平台的推模式水晶报表应用[J].黄河水利职业技术学院学报,2008(4):50-52.
[4]董淑娟.Visual C#2008应用开发教程[M].北京:高等教育出版社,2010.
[5]徐祥涛.在.NET平台下实现水晶报表的查询功能[J].济宁学院学报,2010(3).
[6]马瑞新. C#.NET企业级项目开发教程[M].北京:清华大学出版社,2012.
[7] FitzGerald N.Crystal Reports 2008水晶报表官方指南[M].赵利通,译.2版.北京:清华大学出版社,2010.
[8]林小龙,吴奕甫,罗光红..NET环境中内置的水晶报表的生成和发布[J].信息技术,2010(4):149-151.