Crystal Reports 2016:如何在报表中显示多个表格?
在Crystal Reports中无需子报表实现双表格的方法
不用子报表的话,有两种靠谱的方式,都是通过节专家调整报表节来实现:
方法一:拆分详细资料节+条件抑制
这是最直接的方案,核心是把详细资料节拆成两个子节,分别对应两个表格的数据,再通过条件控制显示逻辑:
- 准备数据源:如果两个表格的数据来自不同表,先在数据库专家里将它们合并(比如用SQL命令做联合查询,给两组数据分别加个标识字段,比如
TableType,值设为1和2);如果是同一张表的不同分类数据,直接用现有字段做区分即可。 - 拆分详细资料节:打开「节专家」(点击工具栏按钮或右键报表空白处选择),选中「详细资料」节,点击右侧的「插入」按钮,将其拆成
Details A和Details B两个子节。 - 布置表格元素:
- 第一个表格的列标题放在「报表页眉」下方(可以插入自定义节,右键报表页眉选「插入下方节」并命名为
Table 1 Header),对应数据字段拖到Details A中。 - 第二个表格的列标题放在
Details A下方的新节(插入节命名为Table 2 Header),对应数据字段拖到Details B中。
- 第一个表格的列标题放在「报表页眉」下方(可以插入自定义节,右键报表页眉选「插入下方节」并命名为
- 设置抑制条件:
- 在节专家里选中
Details A,点击「抑制(无 Drill-Down)」旁的公式按钮,输入{数据源.TableType}=2(表示数据属于第二个表格时,不显示该节)。 - 选中
Details B,设置抑制公式为{数据源.TableType}=1。 - 给两个表格的标题节也设置抑制:比如
Table 2 Header的抑制公式设为Not(IsNull({数据源.TableType})) and {数据源.TableType}=1,确保只在第二个表格数据前显示标题。
- 在节专家里选中
方法二:用分组模拟双表格
如果数据天然可以按分类分组,用分组分隔两个表格会更清晰:
- 创建分组:基于
TableType字段创建组(组1),组排序方式选「指定顺序」,分别设置1和2两个组值。 - 布置表格元素:
- 第一个表格的列标题放在「组页眉1」里,对应数据字段拖到「详细资料」节。
- 第二个表格的列标题放在「组页脚1」里,右键「组页脚1」插入下方节并命名为
Table 2 Details,把第二个表格的数据字段拖到这个新节中。
- 调整显示逻辑:
- 给「组页眉1」设置抑制公式:
{数据源.TableType}=2,只在第一个组显示标题。 - 给「详细资料」节设置抑制公式:
{数据源.TableType}=2,只显示第一个组的数据。 - 给「组页脚1」和
Table 2 Details设置抑制公式:{数据源.TableType}=1,只在第二个组显示第二个表格的标题和数据。
- 给「组页眉1」设置抑制公式:
补充说明
你之前的误解可以纠正:Crystal Reports里完全可以添加多个节——不管是详细资料节拆分,还是分组后的组页眉/组页脚,都能通过节专家插入多个子节,完全可以为不同内容块单独设置显示规则。
内容的提问来源于stack exchange,提问作者JennE
相关产品推荐
相关产品推荐

