在程序开发中,经常要对合并计算、多级汇总、制作图表、条件格式化进行编程。在这种情况下用普通的数据控件很难完成,而水晶报表大大简化了这些工作。用其可以制作非常漂亮的图表、格式化文本,而且还可以把报表导出为
Word
、
Excel
、
PDF
、
HTML
等格式。
6.1
水晶报表技术
水晶报表,英文名为
“Crystal Report”
,其主要功能是用来表现数据。要向用户展示数据可编写代码对记录集进行循环处理,并在
Windwos
应用程序或
Web
应用程序中输出这些数据。但是任何超出基本格式化的工作都会比较复杂,如很难对合并计算、多级汇总、制作图表以及条件、格式化等操作。
6.1.1
水晶报表及其数据源概述
报表最主要的目的,是将数据库与各类型文件之数据源中的数据,依照所需的格式打印出来。由此可知,如何设置报表的数据源是多么重要的一件事。
Crystal Report for Visual Studio.NET
支持目前业界广泛使用的各种数据源,使开发人员能顺利将现有的数据源显示在报表上。
Crystal
水晶报表通过数据库驱动程序与数据库进行连接,用户可以根据下列数据源中的数据进行报表设计:
l
使用
ODBC
驱动程序的任何数据库(
RDO
)。
l
使用
OLEDB
提供程序的任何数据库(
ADO
)。
l Microsoft Access
数据库(
DAO
)。
l MicrosoftExcel
工作薄(
DAO
)。
l ADO.NET
记录集
(DataSet)
。
l ADO.NET
记录集
(Recordset)
。
l CDO
记录集
(Recordset)
。
l DAO NET
记录集
(Recordset)
。
l RDO
记录集
(Recordset)
。
Crystal Report
报表提供了不同的数据源的同时,也提供了数据源的访问模式。
Crystal Report
报表的数据访问模式可以分为
“
提取模式
”
(
Pull Model
)与
“
推入模式
”
(
Push Model
)两种。
所谓的提取模式,也就是驱动程序会自行链接至数据库并视需要来提取数据。当采用提取模式时,
Crystal Report
本身将自动链接至数据库并执行用来提取数据的
SQL
命令,开发人员不需要另外编写代码。如果运行阶段并未编写特定的代码,则使用提取模式。
相反若采用推入模式,开发人员必须自行编写代码来链接至数据库,执行
SQL
命令来创建数据集或数据记录集,并将该对象传递给报表。
开发人员对数据源拥有更大的自主权与控制权。比方说,可以先过滤数据再将数据抟递给
Crystal Report
,或是与应用程序中的其他对象公用数据库键接。
报表引擎本身在功能上的限制,可挥洒的空间自然较大。推入模式的这一特性,使开发人员能够从不同的数据源中提取数据记录,并将它们提交给
Crystal Report
来加以打印。
基本上,若采用提取模式,将只能访问
ODBC
、
OLEDB
与
ACCESS/EXCEL
数据源;然而若采用推入模式,则可以通过
ADO.NET
、
ADO
、
CDO
、
DAO
与
RDO
来访问各种类型的数据源。
如果在开发程序中以推入模式使用
ADO.NET
数据集时,则报表必须使用
Crystal Reports Engine
对象模型。
Crystal Reports Engine
对象模型的特点就是允许开发人员在运行阶段对报表结构与内容进行完整的控制。因此如果应用程序需要在运行阶段动态控制报表内容,则该对象模型将是最佳的选择。在
Visual Studio.NET
的
CrystalDecisions.CrystalReports.Engine
命名空间用来支持报表引擎。在
ASP.NET
程序中使用
Crystal Reports Engine
对象模型时必须引用
CrystalDecisions.CrystalReports.Engine
组件。当在项目中新创建一个
Crystal Report
报表或将一个现有的报表添加至项目中时,应用程序会自动引用
CrystalDecisions.CrystalReports.Engine
组件。如果必须要以手动的方式引用组件时,请从
“
项目
”
菜单中选择
“
添加引用
”
命令,弹出
“
添加引用
”
对话框,在对话框中双击
“CrystalDecisions.CrystalReports.Engine”
组件,如图
6.1
所示。
图
6.1
引用
“CrystalDecisions.CrystalReports.Engine”
组件