您的位置:首页 > 其它

水晶报表介绍学习【推模型】与【拉模型】

2014-02-19 20:48 169 查看
【推荐阅读】啊泰的博客  http://www.cnblogs.com/babyt/category/164227.html

水晶报表程序控制上有两种模式,也就是传说中的PULL模式和PUSH模式,即是大家通常所说的 拉模式和推模式

那么两种模式的区别在哪里?我们先从其中定义来看看:

【1】推模型(pull Model)【手动写代码】《推荐》

推模型需要开发人员编写代码以便连接到数据库,执行SQL命令以创建于报表中的字段匹配的记录集或数据集,并且将该对象传递给报表。

该方法使您可以将链接共享置入应用程序中,并在Crystal Reports收到数据之前先将数据筛选出来。水晶报表仅当数据显示来用。

由应用程序从数据库(源)获取数据,然后把数据推送给水晶报表引擎。水晶报表本身不不跟数据库进行交互。  由应用程序从数据库(源)获取数据,然后把数据推送给水晶报表引擎。水晶报表本身不不跟数据库进行交互。  
【2】拉模型(push Model)【少些代码】

在拉模型中,驱动程序将连接到数据库并根据需要将数据“拉”进来。使用这种模型时候,与数据库的连接和为了获取数据而执行的SQL命令都同时有Crystal Reports本身处理,不需要开发人员编写代码。如果在运行时候无需编写任何特殊代码,则使用拉模型。

》》》由水晶报表模板(引擎)直接连接数据库(源),从数据库(源)里拉取数据。就是我们在水晶报表里设置好数据库信息,以及相关的表。 

当我们在程序中调用水晶报表引擎,挂载模板后,水晶报表引擎会根据模板里的数据库信息,及表信息主动连接数据库, 返回数据给报表模板,模板根据设计样式进行呈现。

对比分析:

使用PUSH模式将会比PULL模式多了不少代码。 而且因为PULL模式是直连数据库,比PUSH模式的先获取数据结果,然后推送给水晶报表少了一个过程。而中间结果集本身就占用系统资源。 所以PULL模式比PUSH执行效率高、代码量少。如果是大数据量的清单类的报表,建议用PULL。 

但是既然拉模式简单,方便而快捷,而我在这里为什么要推荐大家用【推模式】呢,原因如下: 

(1)可以公用系统数据库连接,减少数据库连接损耗

(2)可自由组合多数据源(如多数据库等),这一点PULL模式也可以实现,但是不如这个方便

(3)灵活多变,因为由于我们是把数据获取后,再PUSH给水晶报表的,那么在这个中间,就有很多数据再加工的可能性。

(4)CS模式或小型系统,建议用PULL模式,大型BS系统,建议用PUSH模式。 当然也可以根据实际情况混用。

**********************************************************************

原则1:无论什么模式,返回尽可能少的数据给报表。

原则2:无论是PULL还是PUSH模式,数据源处理部分只负责把数据传给报表,至于怎么呈现是报表里去做的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: