本章内容<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

6-1  水晶报表技术简介

6-2 水晶报表的主要功能

6-3 水晶报表的执行模式
本章将重点介绍“水晶报表”( Crystal Report ),其主要功能是以报表的形式表现数据。通过对报表文件中的页眉、页脚以及详细资料区域的设置,获得与实际业务纸质报表相同格式的电子报表,并在 Windwos 应用程序或 Web 应用程序中输出这些由计算机产生的统计分析数据。
u 本章的学习目标:

n 理解水晶报表的作用和优点

n 使用水晶报表专家创建水晶报表

n 理解水晶报表的推拉模式设计

n 在窗体中使用水晶报表和报表绑定

n 学习水晶报表与数据库的综合复杂开发

6-1  水晶报表简介

在很多企业日常运营业务中,经常会出现一些报表业务处理,如某部门的薪金详细信息报表就属于财务报表的一种,这些报表的输出要求有一定的规格制式,数据的处理要求符合业务逻辑的要求。如表 6-1 所示为某部门的薪资表
姓名

部门

职位

薪金

Allen John

技术部

分析员

10000

David Blake

销售部

销售员

3500

Jack Turner

办公室

行政人员

4200

BinaryReader

办公室

行政人员

4200

Mark Lee

销售部

经理

12000

Chan Cho

销售部

销售员

3500

Susan Jones

办公室

行政人员

4200

Scott William

销售部

销售员

3500

Adam Johns

销售部

销售员

3500

6-1  部门薪资表

如果转换成为按照员工所在的部门进行薪资统计工作(如表 6-2 所示),那么有关人员就需要手动计算每个部门的总薪金,依次填写统计后的数据。这种方式的缺点是准确性地,数据容易受到人为因素影响。
姓名

部门

职位

统计薪金

Susan Jones

办公室

行政人员

24600

Jack Turner

行政人员

BinaryReader

行政人员

Mark Lee

销售部

经理

26000

Chan Cho

销售员

David Blake

销售员

Scott William

销售员

Adam Johns

销售员

Allen John

技术部

分析员

10000

6-2  部门薪资统计表

水晶报表出现的目的,就是使得计算机参与到办公系统业务流程中,使得电子水晶报表变为格式化且有条理的数据记录表示方式。
水晶报表可以由很多的方法得到,其中一个就是使用 VS.Net 来创建,它提供了非常丰富模型以使我们能够在运行时操作属性和方法。如果你正在使用 VS.Net 开发 .Net 程序,那么你就不需要再安装其它软件了,因为水晶报表已经内嵌在 VS.Net 中了。

1.水晶报表的优点

VS.Net 水晶报表有下面一些主要的优点:  
n  快速的报表开发;
n  能够导出成为复杂的交互性图表;
n  可以与其它控件一起在 WebForm 中使用;
n  能够动态地将报表导出成为 .pdf,.doc,xls,html,rtf 等多种格式;

2.水晶报表主要控件

VS.Net 水晶报表的主要控件包括以下四个:  
1)水晶报表引擎( Crystal Report Engine (CREngine.dll)

    通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。也正是因为报告引擎的作用,才可以将 Asp.Net 中的水晶报表转换成为普通 HTML 格式水晶报表设计器( Crystal Report Designer (CRDesigner.dll) 。水晶报表就是在设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。  
2.rpt报表文件

    执行报表中的第一步就是在水晶报表设计器接口创建此报表,在默认安装中微软已经提供了一些现成的 .rpt 例子。
3 Data Source

    .rpt 文件取得数据库的方法取决于你方法的选择,你能选择让水晶报表自己选择数据而不使用任何代码或者也可以选择手动的组装 DataSet, 然后再将其传送到报表文件。
4)水晶报表查看控件

    水晶报表查看控件 Crystal Report Viewer web form Control (CRWebFormViewer.dll) 是一个 WinForm 控件,可以将它看成是一个在 WinForm 页面中存放报表的容器。

6-2  水晶报表的基本操作

6-2-1 水晶报表的基本功能

水晶报表的主要功能可以包括四个方面的内容:

1.借助交互式界面更加容易地创建报表

VS2005 有专门的水晶报表设计工具(如图 6-1 ),在工具箱的 Crystal Reports 中,我们可以看到水晶报表主要有两个基本控件: CrystalReportViewer ReportDocument ,分别表示水晶报表浏览器控件和水晶报表设计控件。通过这两个常用控件,我们可以很轻松的完成报表的创建工作。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
6-1 工具箱中的Crystal Reports控件集合

2. 运行时数据的自定义功能

水晶报表不仅仅可以对于来自数据库的单表数据进行定制式的显示,同时可以允许对复杂的数据来源(如存储过程数据,视图数据,分布式数据)进行特定的设计工作,具有非常强大的数据表现能力。同时其界面设计方便,适用于不同报表格式的开发设计。

3.水晶报表的主要特性和结构

1)水晶报表的主要特性包括以下几个方面:

n 快速的报表开发
n 能够导出成为复杂的交互性图表
n 可以与其它控件一起在 WebForm 中使用
n 能够动态地将报表导出成为 .pdf,.doc,xls,html,rtf 等多种格式
2)水晶报表的基本结构

水晶报表的基本结构主要有水晶报表引擎( Crystal Report Engine (CREngine.dll) )和水晶报表设计器( Crystal Report Designer (CRDesigner.dll) )共同构成。(如图 6-2 所示)
水晶报表引擎以水晶报表浏览器样式呈现,通过它可以完成一些任务,如在报告文件中合并数据,转换报告为其它格式等。也正是因为水晶报表引擎的作用,才可以将水晶报表转换成为 .pdf,.doc,xls,html,rtf 等多种格式。
水晶报表文件就是在水晶报表设计器中创建的,在设计器中你可以设计标题,插入数据,公式,图表,子报表等。
6-2 Crystal Reports的基本结构

6-2-2 案例学习:打开并查看水晶报表文件

本次实验目标是通过打开一个RPT文件,将水晶报表显示在水晶报表查看器之内。

u 实验步骤1

新建一个 WinForm 窗体,从工具箱的 Crystal Reports 中拖放一个 CrystalReportViewer 控件到窗体上,再放置一个 Button 控件用来打开一个 RPT (报表文件)文件,该 RPT 文件将在 CrystalReportViewer 控件内显示出来。基本界面如图 6-3 所示。
6-3 WinForm中使用水晶报表查看器设计界面
u 实验步骤2

用鼠标双击 Button 控件 , 进入 Button 控件的鼠标单击事件编码,并键入如下代码:
        private void button1_Click(object sender, System.EventArgs e)

        {

            OpenFileDialog dlg = new OpenFileDialog();//建立一个打开文件对话框对象

            dlg.Title = "打开水晶报表文件";//命名该打开文件对话框对象标题

            dlg.Filter = "水晶报表文件(*.rpt)|*.rpt|所有文件|*.*";

            //命名该打开文件对话框对象打开文件类型只能够是rpt类型的文件

            if (dlg.ShowDialog() == DialogResult.OK)

            {

                //如果打开文件对话框用户选择确定

                crystalReportViewer1.ReportSource = dlg.FileName;

                //则将该RPT文件作为水晶报表浏览器的浏览文件

            }

}