Crystal Reports Designer  

将记录选定推卸给数据库服务器

提高报表处理速度最为重要的做法是限制从数据库返回的数据量。实现这种做法的主要工具是记录选定公式。

Crystal Reports 分析记录选定公式并从中生成 SQL 查询。然后,数据库处理该 SQL 查询,将得到的记录发送回 Crystal Reports。Crystal Reports 然后在本地为从数据库检索到的每个记录对记录选定公式进行求值,从而计算出用于生成报表的记录集。

不必要的记录在以下两个阶段消除:在数据库中使用 SQL 查询消除以及在 Crystal Reports 内由记录选定公式消除。为了提高速度,可能需要在第一阶段尽可能多地消除记录。通过有效地设计记录选定公式,可以将很大一部分处理工作推卸给数据库服务器来完成,这样在向 Crystal Reports 返回记录之前,数据库已经消除了不必要的记录。这通常称为将记录选定下推到数据库服务器

参数字段

不要在每次打开报表时均显示报表的所有数据,可以创建参数字段提示用户指定希望查看的数据。为了减少从数据库服务器传输的数据量,请将这些参数字段直接合并到记录选定公式中。

一般情况下,参数字段为用户提供交互性,用户响应参数提示以指定希望查看的数据。但是,通过将参数字段直接合并到记录选定公式中,将不仅提供交互性,而且减少了数据传输并改善了性能。

可以通过“选择专家”或“记录选定公式编辑器”向记录选定公式添加参数字段。当使用“记录选定公式编辑器”时,将参数字段和其他任何字段一样对待。请参见将参数合并到公式

SQL 表达式字段

为了维持最佳的报表处理速度,请避免在记录选定公式中使用公式(不管是 Crystal 语法还是 Basic 语法)。而应该用等效的 SQL 表达式字段替换原公式,然后将 SQL 表达式字段合并到记录选定公式中。这样做将大大提高您的记录选定被下推到服务器的机会。

另外,应避免在公式字段上进行排序、分组或总计(不管是 Crystal 语法还是 Basic 语法)。而应该用等效的 SQL 表达式字段替换原公式字段,然后在 SQL 表达式字段上进行排序、分组或总计。这样做也将大大提高在服务器上执行处理的机会。

最后,如果数据库支持 Case 逻辑,并且报表需要摘要 If-Then-Else 公式计算,请用 SQL 表达式字段替换该公式。在此类情况下,SQL 表达式字段使 Crystal Reports 可以在服务器上执行报表的分组。请参见 SQL 表达式