《C#程序设计及应用教程 第2版 教学课件 ppt 马骏 第10章 报表设计》由会员分享,可在线阅读,更多相关《C#程序设计及应用教程 第2版 教学课件 ppt 马骏 第10章 报表设计(16页珍藏版)》请在金锄头文库上搜索。
1、10.1 水晶报表基础知识 10.2 水晶报表的显示与设计,第10章 报表设计,10.1 水晶报表基础知识,10.1.1 水晶报表的分类 从外观分:标准报表、交叉表和邮件标签。 从分发形式分:嵌入式报表和非嵌入式报表。,10.1.1 水晶报表的分类(续),嵌入式报表和非嵌入式报表不同点: 嵌入式报表具有与.rpt文件对应的同名包装类,直接通过代码与包装类进行交互,而不是与原始报表文件本身进行交互。非嵌入式报表则单独以.rpt文件形式存在报表,该报表不包含在项目内,也没有对应的报表包装类。 对于嵌入式报表,系统对项目进行编译时,与其他项目资源一样,报表和其包装类都会被自动嵌入到程序集中,用户看不
2、到被包装后的.rpt文件。对于非嵌入式报表,如果是ASP.NET网站,要求该.rpt文件保存在网站根目录下,如果是Windows应用程序则要求分发后.rpt文件保存在和.exe文件相同的目录下。 对于嵌入式报表,如果修改了报表内容,必须重新编译整个项目。修改非嵌入式报表不须重新编译整个项目。,10.1.2 嵌入式水晶报表设计器,在嵌入式水晶报表设计器内,可以直接通过拖放方式将一个报表对象(如数据库字段或文本对象)拖动到设计器上,然后使用“属性”窗口或快捷菜单格式化该对象;可以定义报表的数据源,选择要使用的数据记录并对其进行分组,设置报表对象的格式及布局。,10.1.3 报表节,1) 报表页眉
3、报表页眉节中的对象只在报表开头显示一次,一般在该节中放置希望只在整个报表开头出现的信息。 2) 页眉 保存在页眉中的对象在每页的顶部位置都会显示。 3) 详细资料 保存在详细资料中的对象在每条记录中都会显示。 4) 报表页脚 报表页脚节中的对象只在报表的结束显示一次,一般在该节中放置希望只在整个报表结尾出现的信息。 5) 页脚 保存在页脚中的对象在每页的底部都会显示。 6) 组页眉和组页脚 组页眉和组页脚中的对象分别显示在每个新组的开始位置和结束位置。,10.1.4 将ADO.NET数据集作为报表数据源,使用VS2008的ADO.NET数据集设计器,既可以从多种数据源(包括Access、Ora
4、cle和SQL Server数据库)创建ADO.NET数据集,也可以灵活、方便地控制报表的输出。,10.2 水晶报表的设计与显示,对象模型是指构成编程模型的核心类及其周围类。 分类: CrystalReportViewer对象模型 ReportDocument对象模型,10.2.1 水晶报表对象模型,1. CrystalReportViewer对象模型 CrystalReportViewer控件包含可用于控制该控件如何显示报表的属性和方法,以及少量的与绑定到该控件的报表进行交互的属性和方法。这些属性和方法构成了一个功能有限的CrystalReportViewer对象模型。 CrystalRep
5、ortViewer控件仅用于控制报表显示的形式,比如控制显示缩放比例等。而要与报表内部进行交互,则应该使用封装后的其他对象模型。即尽量不要使用CrystalReportViewer对象提供的属性和方法与报表内部进行交互。,10.2.1 水晶报表对象模型(续),2. ReportDocument对象模型 ReportDocument对象模型比CrystalReportViewer功能多、范围广。该对象模型提供了在代码中处理报表的各种能力。 在VS2005中创建水晶报表文件.rpt,完成报表设计后,选择主菜单的【生成】【生成解决方案】,则系统会自动创建一个ReportDocument对象模型,在工
6、具箱中即可以看到自动生成的与报表同名的组件,将该组件拖放到设计窗体后,即得到实例,使用该实例的属性完成对报表结构及报表内部数据的各种控制。,10.2.1 水晶报表对象模型(续),实例的属性完成对报表结构及报表内部数据的各种 控制。例如: 1) ReportDefinition属性 获取ReportDefinition对象,该对象对应于报表设计器中的布局。 2) DataDefinition属性 获取DataDefinition对象,该对象对应于报表设计器中的字段资源管理器。,10.2.1 水晶报表对象模型(续),3) SummaryInfo属性 获取SummaryInfo对象,可以通过该对象设
7、置报表主 题等。例如: studentReport1.SummaryInfo.ReportTitle = “学生情况表“; 该行代码的意思是设置报表标题为“学生情况表”。 4) RecordSelectionFormula属性 获取或设置记录选定公式,用于筛选指定的记录。例 如:studentReport1.RecordSelectionFormula = “MyTable2.姓名 like *王*“; 该行代码的意思是匹配MyTable2中所有姓名中包含“王”的 记录。,10.2.2 显示与打印水晶报表,1设计水晶报表 在VS2008模板中,通过新建项,然后利用向导创建水晶报表,再通过嵌入式
8、水晶报表设计器,即可将.prt报表设计出来。 2.显示和打印水晶报表 假如已经设计了一个水晶报表MyTable2Report.rpt,显示和打印该报表的步骤如下。 (1)添加一个窗体。例如Form1.cs。 (2)从工具箱中向窗体拖放一个CrystalReportViewer控件,该控件提供了显示(打印预览)、打印和导出报表到Excel文档等功能。,10.2.2 显示与打印水晶报表,(3)在Form1.cs中添加命名空间引用,以便使用ReportDocument对象模型: using CrystalDecisions.CrystalReports.Engine; (4)创建报表实例。例如: M
9、yTable2Report myTable2Report = new MyTable2Report(); (5)根据报表实例,得到对应的ReportDocument对象。例如: ReportDocument document = (ReportDocument)myTable2Report; (6)将CrystalReportViewer控件绑定到ReportDocument对象。例如:crystalReportViewer1.ReportSource = document; (7)利用ReportDocument对象与报表内部交互。,10.2.2 显示与打印水晶报表,3打印机设置 右击报表的任何空区域,选择【设计】【打印机设置】【无打印机】,然后单击“确定”按钮即可。,10.2.2 显示与打印水晶报表,【例10-1】设计一个水晶报表,输出MyDatabase数据库中MyTable2的所有数据。,10.2.2 显示与打印水晶报表,【例10-2】设计一个水晶报表,显示MyDatabase.mdf数据库中的学生情况,要求报表每页显示一个学生的信息,包括基本情况、家庭成员等,并能够在程序中指定查询条件。,