重新设计子报表以降低要求

在 Crystal Reports for Visual Studio 项目中优化可伸缩性的另一种方法是重构子报表调用以降低要求。

关于使用子报表

虽然通常使用子报表创建复杂的报表,但子报表会增加相当大的系统开销。这并不是说不能使用子报表,但应尽量减少子报表的使用。

另外考虑当将子报表放入重复的节(例如“组头”或“详细资料”节)中时,该子报表的每个实例都需要它自己的报表作业。这意味着如果一个包含 100 条记录的报表在详细资料节中有子报表,那么该报表实际将运行 101 个报表作业。

将子报表重构为链接到报表的 .NET DataGrid 控件

子报表经常用于汇总/详细资料模型中:

  • 主报表显示汇总行。
  • 各行将链接到包含详细资料报表的子报表。

对于不需要打印的汇总数据,请考虑在行列表(而不是报表)中显示这些汇总数据。换句话说,不要使用报表作为链接到多个子报表的汇总来获得详细资料,而是使用 .NET DataGrid 控件作为链接到多个常规报表的汇总来获得详细资料。将 .NET DataGrid 控件用作汇总提供了一个更加简单、伸缩性更好的解决方案。

若要实现这种解决方案,请将数据的结果集绑定到 DataGrid 控件,每个行 ID 都有一个与报表的链接。这样对每行只使用一个报表(带有一个参数,该参数接受从 DataGrid 行 ID 的 URL 传递到它的唯一 ID)。

在此方案中,当显示 DataGrid 时不会发生报表处理。只有当选择了 DataGrid 中的某个链接时才发生报表处理。