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












