有什么办法提高水晶报表的填充数据的速度

小流星子 2003-10-17 03:47:28
不知道为什么,我用水晶报表填充数据时很慢,有办法改进吗?
...全文
49 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
haibodotnet 2003-11-24
  • 打赏
  • 举报
回复
记录选定性能提示

在设置记录选定请求时,请考虑下列与性能相关的项目:

常规
若要下推记录选定,必须在“报表选项”对话框(从“文件”菜单打开)中选中“为提高速度而使用索引或服务器”。
在记录选定公式中,避免在非参数字段的字段上进行数据类型转换。
例如,避免使用 ToText( ) 将某数值数据库字段转换为字符串数据库字段。

能够下推一些使用常量表达式的记录选定公式。

PC 数据库
只能下推编有索引的字段上的记录选定。
只能下推 AND 子句(非 OR)。

SQL 数据库
能够下推索引字段或非索引字段上的记录选定。
如果使用索引字段,SQL 服务器响应速度将加快。
能够下推 AND 和 OR 子句。
可以下推包含某些类型的嵌入公式的记录选定公式。
应该合并 SQL 表达式字段以下推进行记录选定所需的公式计算。
在“数据库”菜单上单击“显示 SQL 查询”,以查看将要发送到数据库服务器的 SQL。
有关其他详细信息,请参阅编写高效记录选定公式的策略和将参数字段合并到记录选定公式中。
haibodotnet 2003-11-24
  • 打赏
  • 举报
回复
超高效提升水晶报表性能之在服务器上分组的好处 - 示例

以下示例描述了一个典型的制表方案,对于该方案,在服务器上分组可显著减少数据库服务器的不必要的数据传输。

通过在服务器上分组来减少数据传输
打开示例报表 Group.rpt(位于 Feature Examples 文件夹)。
查看 Crystal Reports 窗口的右下角,可以注意到有 269 条记录返回给此报表。

注意: 只有在“视图”菜单中选中“状态栏”选项才会看到此数字。

在“报表”菜单中,单击“节专家”打开“节专家”。
在“节”列表中,选择“详细资料”。
在“公用”选项卡中,选择“隐藏(深化完成)”。这会隐藏报表的“详细资料”节,从而在报表中仅显示组页眉。(在这种情况下,报表按“国家/地区”分组。)
单击“节专家”中的“确定”。“详细资料”记录会从报表中消失。
按 F5 键刷新报表数据(或单击工具栏中的“刷新”按钮)。
可以看到,即使从视图中隐藏“详细资料”记录,仍为报表返回了 269 条记录。

在“数据库”菜单中,单击“在服务器上执行分组”。
现在可以看到仅有 71 条记录返回给报表。(按“国家/地区”)分组已在服务器上执行完毕,这样,传输给报表的记录就更少。

双击报表对某个国家/地区进行深化。
提示: 当可以执行深化时,光标会变成一个放大镜。

Crystal Reports 将根据您的需要检索相应的“详细资料”记录。

例如,如果对澳大利亚进行深化,Crystal Reports 会迅速检索构成该组的七条记录。

通过隐藏此报表的“详细资料”记录,您已为用户创建了易于浏览的汇总报表。每个用户可先定位他或她关注的国家/地区,然后进行深化以检索有价值的详细资料。

此外,通过启用“在服务器上执行分组”选项,您已确保初始处理在数据库服务器上完成。此后,仅为报表传输必要的记录。

有关服务器端处理的更多信息,请参阅服务器端处理。
haibodotnet 2003-11-24
  • 打赏
  • 举报
回复
超高效提升水晶报表性能之下推记录选定 - 示例

本示例展示编写可以下推到数据库服务器的记录选定公式的好处。

在 Xtreme 示例数据库的订单表中,有 2192 条记录,其中订单日期在 2001 年以前的有 181 条。假设您只想对这些记录制表。一方面,可以使用下面的记录选定公式:

Year ({订单.订单日期}) < 2001

生成的 SQL 查询会将 2192 条记录全部发送至 Crystal Reports,然后记录选定公式将其减少到 181。要了解这一点,单击“数据库”菜单上的“显示 SQL 查询”,您会注意到 SQL 查询没有 WHERE 子句。这是因为 Crystal Reports 无法下推 WHERE 子句中的 Year ( ) 函数。

另一方面,下面的记录选定公式生成相同的报表:

{订单.订单日期} < #Jan 1, 1997#

上面的第二条公式可在数据库服务器上执行,因此可以下推。所生成的 SQL 查询仅将 181 条记录发送到 Crystal Reports。因此,在由 Crystal Reports 对记录选定公式求值时,无须进一步消除记录。单击“数据库”菜单上的“显示 SQL 查询”,您会注意到所生成的 SQL 查询中有 WHERE 子句。

如本示例所示,在改进记录选定公式后,报表的处理速度提高了。在本例中,两个公式生成相同的报表,但第二个公式利用了数据库服务器在处理其数据时可以使用的功能和优化。

提示: 请参阅题为“记录选定性能提示”一节,了解其他有关信息和设置记录选定请求时的限制。

若要了解更多有关编写高效的记录选定公式的信息,务请阅读本节的其余部分:使用增强的记录选定公式。

注意: 如果您不熟悉记录选定公式,可以先从“选择专家”或记录选定公式示例模板开始学起。有关更多细节以及对记录选定的介绍,请参阅选择记录。
bmc317 2003-11-20
  • 打赏
  • 举报
回复
我有同感,不知道有没有办法?
zhehui 2003-10-17
  • 打赏
  • 举报
回复
我用Access做数据库也是很慢。
还是用pb好。C#开发winform不是很好。占内存太大了。45M之大。
小流星子 2003-10-17
  • 打赏
  • 举报
回复
我试过速度最慢的一步是
Load("CrystalReport1.rpt");
运行过该程序一次后速度后有些好转,什么原因,

meixiaofeng 2003-10-17
  • 打赏
  • 举报
回复
up

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧