以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 Java/Eclipse 』 (http://bbs.xml.org.cn/list.asp?boardid=41) ---- [转帖]水晶报表性能优化之道 (http://bbs.xml.org.cn/dispbbs.asp?boardid=41&rootid=&id=24013) |
-- 作者:javakking -- 发布时间:11/7/2005 1:53:00 PM -- [转帖]水晶报表性能优化之道 转自: [url=http://www.report99.com]report99[/url] 目录 2、下推记录选定 - 示例 在 Xtreme 示例数据库的订单表中,有 2192 条记录,其中订单日期在 2001 年以前的有 181 条。假设您只想对这些记录制表。一方面,可以使用下面的记录选定公式: 生成的 SQL 查询会将 2192 条记录全部发送至 Crystal Reports,然后记录选定公式将其减少到 181。要了解这一点,单击“数据库”菜单上的“显示 SQL 查询”,您会注意到 SQL 查询没有 WHERE 子句。这是因为 Crystal Reports 无法下推 WHERE 子句中的 Year ( ) 函数。 另一方面,下面的记录选定公式生成相同的报表: 上面的第二条公式可在数据库服务器上执行,因此可以下推。所生成的 SQL 查询仅将 181 条记录发送到 Crystal Reports。因此,在由 Crystal Reports 对记录选定公式求值时,无须进一步消除记录。单击“数据库”菜单上的“显示 SQL 查询”,您会注意到所生成的 SQL 查询中有 WHERE 子句。 如本示例所示,在改进记录选定公式后,报表的处理速度提高了。在本例中,两个公式生成相同的报表,但第二个公式利用了数据库服务器在处理其数据时可以使用的功能和优化。 提示: 请参阅题为“记录选定性能提示”一节,了解其他有关信息和设置记录选定请求时的限制。 若要了解更多有关编写高效的记录选定公式的信息,务请阅读本节的其余部分:使用增强的记录选定公式。 注意: 如果您不熟悉记录选定公式,可以先从“选择专家”或记录选定公式示例模板开始学起。有关更多细节以及对记录选定的介绍,请参阅选择记录。 2、隐藏(深化完成)数据,按需显示…… 打开示例报表 Group.rpt(位于 Feature Examples 文件夹)。 注意: 只有在“视图”菜单中选中“状态栏”选项才会看到此数字。 在“报表”菜单中,单击“节专家”打开“节专家”。 在“数据库”菜单中,单击“在服务器上执行分组”。 双击报表对某个国家/地区进行深化。 Crystal Reports 将根据您的需要检索相应的“详细资料”记录。 例如,如果对澳大利亚进行深化,Crystal Reports 会迅速检索构成该组的七条记录。 通过隐藏此报表的“详细资料”记录,您已为用户创建了易于浏览的汇总报表。每个用户可先定位他或她关注的国家/地区,然后进行深化以检索有价值的详细资料。 此外,通过启用“在服务器上执行分组”选项,您已确保初始处理在数据库服务器上完成。此后,仅为报表传输必要的记录。 有关服务器端处理的更多信息,请参阅服务器端处理。 3、利用按需分配子报表…… 例如,在设计报表显示每个雇员对于每种产品和每种产品类型的季度销售额时,可能还希望通过包含每周销售信息来跟踪每个雇员的进展情况。但是,查看该报表的很多用户可能不会对此类额外的数据感兴趣。在此类情况下,可将报表的每周销售部分提取出来,将其作为按需分配子报表附加到报表中。仅当用户在该按需分配子报表上深化时,才会从数据库检索有关每周销售情况的详细信息。 很多报表对象(如大型交叉表、OLAP 网格、高级图表和地图)都是可以包含到按需分配子报表中的理想候选对象,以使对象在深化之前不会被处理。 若要插入一个按需分配子报表,请参阅插入子报表和创建按需要显示子报表。 提示:也可以将此类报表对象放入使用“在服务器上执行分组”选项的报表的隐藏“详细资料”部分中。这样做时,数据库服务器执行大部分处理任务,而且只将记录的子集从服务器传输到本地计算机(其他记录则在您深化到隐藏的节时检索)。 2、在服务器上执行多数处理并只将有关详细信息推入您的计算机。 服务器端处理是这样运作的:通过使用 SQL 传递技术将 SQL 语句发送到数据库服务器并检索初始数据集,Crystal Reports 将很多数据检索和排序工作卸载到服务器系统上,从而释放了本地内存和资源以用于更重要的任务。这就是为什么服务器端处理只处理已排序和分组的报表,如果报表没有排序和分组(例如,如果是一个简单的列表报表),则无法推入服务器进行处理。还应注意服务器端处理只处理基于 SQL 数据源的报表。 注意: 请记住:若要在服务器上执行分组,报表必须符合下列条件: 注意: 2、已保存数据 您可以从 Crystal Enterprise 内部调度这些报表,使其自动从数据库定时刷新。例如,如果销售数据库每天或每周只更新一次,那么可按相似的进度运行报表并将其与数据一同保存。这样,销售代表就总能使用当前的销售数据,而不必在每次打开报表时访问数据库。或者,您也可以根据需要来刷新带有已保存数据的报表。 若要保存带有数据的报表,首先要确保在“文件”菜单中选中“随报表保存数据”选项,然后保存报表。 3、将数据与报表一起保存命令 通常情况下,当保存报表时,程序保存报表定义及其基础数据。报表定义包含打印报表所需的所有信息。这些数据是运行报表时原始数据的快照。如果通过“文件”菜单上的选项命令清除“将数据与报表一起保存”选项,则程序仅保存报表定义。每次运行报表时必须刷新数据。请参阅刷新报表数据命令。若要为当前报表选择该选项,请使用该命令。 在使用“将数据与报表一起保存”命令前需考虑一些事情。 如果仅保存报表定义,则需要较少的磁盘空间(仅够模板使用),但程序在打印报表前需要检索数据。 注意:当程序将数据与报表一起保存时,会压缩数据以减少所占用的磁盘空间。打开报表时将解压缩数据。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |