代码改变世界

水晶报表的两种类型

2011-02-28 14:30  bingcaihuang  阅读(1024)  评论(0)    收藏  举报

水晶报表在应用时分两种方法:分别是拉模式(PULL)、推模式(PUSH)。

水晶报表组件介绍:水晶报表在VS2005中有两种组件,在WEB项目是分别是CrystalReportSource,CrystalReportViewer。在FORM项目里是分别是crystalReport,CrystalReportViewer。

CrystalReportSource,crystalReport是水晶报表的数据提供者;CrystalReportViewer是水晶报表的浏览器。另外还要介绍一下水的报表的文件是以rpt为扩展名的文件,该文件可以用VS2005生成。

什么时候用推模式,而不是直接连接数据库?1.不能直接数据库,如来自于WebServices,文本行数据,纯界面上的数等;2.多并发报表,水晶报表直接连数据库会长时间占用数据库连接,影相系统性能;3.数据库数据不符合报表呈现样式的需要,此时需要使用DataSet创建报表,推模式。而对大数据量,不推荐用DataSet模式,但如果可以通过Group By压缩或者是通过过滤条件过滤后返回的记录集较少,也可以采用此方法。

用推模式比较多,重点说下推模式,在推模式中编程组装的Dataset里的SQL语句中的字段要与水晶报表里的SQL语句字段一致。简单的说,推模式中的水晶报表是个模板,把在设计器里报表的格式设好后,再组装DataSet就可以生成报表了。

操作步骤:

1.创建一个水晶报表工程,这样会自动把水晶报表依赖的组件自动加上去;

2.暂时不进行报表设计,新增一个DataSet1,增加DataTable,如果表之间存在关系,则加上关系,如果不加,多表操作时会出现数据重复;

SqlDataAdapter 是DataSet 和更新数据库的一组数据命令和一个数据库连接的填充器。提供 DataSet 和 SQL Server 之间的桥接,用于检索和保存数据。

SqlDataAdapter 是通过对数据源映射Fill(可更改 DataSet 中的数据以匹配数据源中的数据)和 Update(可更改数据源中的数据以匹配 DataSet 中的数据)来提供这一桥接。

1、构造函数

(1)SqlDataAdapter ()

(2)SqlDataAdapter (SqlCommand) :用指定的 SqlCommand 作为 SelectCommand的属性。

(3)SqlDataAdapter (String, SqlConnection) :使用 SelectCommand 和 SqlConnection 对象初始化 SqlDataAdapter 类的新实例。

(4)SqlDataAdapter (String, String) :用 SelectCommand 和一个连接字符串初始化 SqlDataAdapter 类的新实例。

2、SqlDataAdapter 的部分属性

AcceptChangesDuringUpdate:在 Update 期间是否调用 AcceptChanges。 
ContinueUpdateOnError:在行更新过程中遇到错误时是否生成异常。 
DeleteCommand:获取或设置一个 Transact-SQL 语句或存储过程,以从数据集删除记录。 
InsertCommand:获取或设置一个 Transact-SQL 语句或存储过程,以在数据源中插入新记录。 
MissingMappingAction:确定传入数据没有匹配的表或列时需要执行的操作。 
MissingSchemaAction:确定现有 DataSet 架构与传入数据不匹配时需要执行的操作。 
SelectCommand:获取或设置一个 Transact-SQL 语句或存储过程,用于在数据源中选择记录。 
TableMappings:获取一个集合,它提供源表和 DataTable 之间的主映射。 
UpdateBatchSize:获取或设置每次到服务器的往返过程中处理的行数。 
UpdateCommand:获取或设置一个 Transact-SQL 语句或存储过程,用于更新数据源中的记录。

3、常用方法


Fill: 填充 DataSet 或 DataTable。 
FillSchema: 将 DataTable 添加到 DataSet 中,并配置架构以匹配数据源中的架构。 
GetFillParameters:获取当执行 SQL SELECT 语句时由用户设置的参数。 
GetType:获取当前实例的 Type。 
Update:为 DataSet 中每个已插入、已更新或已删除的行调用相应的 INSERT、UPDATE 或 DELETE 语句。 
Dispose: 释放由 Component 占用的资源。

4、事件


Disposed:添加事件处理程序以侦听组件上的 Disposed 事件。 
FillError:在填充操作过程中出现错误时返回。 
RowUpdated:在对数据源执行命令后的 Update 过程中发生。试图进行更新,因此激发了该事件。 
RowUpdating:在对数据源执行命令前的 Update 过程中发生。试图进行更新,因此激发了该事件。

5、使用SqlDataAdapter 的注意点

(1)使用SqlDataAdapter对象的时候不需要打开Connection连接,在使用SqlDataAdapter的Fill()方法填充数据时会自动打开数据库连接,并在执行完之后自动关闭连接。如果Connection连接在调用Fill()方法之前打开,则执行填充之后不会关闭连接而是保持现有状态。

(2)如果在一个Connection连接在调用多个Fill()方法,则在调用Fill()方法之前打开Connection连接以提高效率。

(3)SqlDataAdapter和DataSet之间没有直接连接。SqlDataAdapter的Fill()方法填充完数据之后两者之间就没有连接了。

(4)SqlDataAdapter 填充 DataSet 时,如果必须的表和列不存在则会自动创建。默认的返回架构中不包括主键(MissingSchemaAction 属性设置为AddWithKey时会创建主键)。

(5)SqlDataAdapter可以使用FillSchema()方法填充DataSet时SqlDataAdapter 会创建 DataSet 的架构,并在填充数据之前就将主键信息包括进去。

(6)当创建 SqlDataAdapter 的实例时,读/写属性将被设置为初始值。

(7)SqlDataAdapter 与 SqlConnection 和 SqlCommand 一起使用,以便在连接到 SQL Server 数据库时提高性能。