Crystal Report新手求助:如何在已有表格下方创建新表格
解决Crystal Reports中两个表格顺序显示的问题
嘿,我刚入门Crystal Reports的时候也踩过这个坑!你现在遇到的交替显示问题,根源在于Details节的渲染逻辑——默认情况下,每一条数据源记录都会触发一次Details节的渲染,所以你新增的Details节会跟着原Details节一起,每一行数据都重复一次,自然就出现了表1行、表2行交替的情况。
下面给你两种最实用的解决方法,根据你的数据源情况选就行:
方法1:用子报表实现独立表格(推荐)
如果两个表格的数据源不同,或者你希望第二个表格完全独立于第一个表格的渲染周期,子报表是最稳妥的方案:
- 右键报表空白区域,选择「Insert」→「Subreport」
- 给子报表起个名字(比如
Table2_Report),选择「Create a new report」,然后按照你创建第一个表格的流程,设计第二个表格的内容 - 把建好的子报表拖到Report Footer节里(确保Report Footer没有被设置为「Suppress (No Drill-Down)」)
- 运行报表时,Crystal会先完整渲染第一个表格的所有行(原Details节的内容),等所有表1数据显示完后,再渲染Report Footer里的子报表,也就是完整的表2内容
方法2:用分组节分离两个表格(适合同数据源场景)
如果两个表格用的是同一个数据源,只是需要分块显示,可以通过分组来控制:
- 新建一个公式字段(右键「Formula Fields」→「New」),命名为
{@TableGroup},公式内容写一个固定值,比如:"Group1" - 基于这个公式字段创建分组(右键报表→「Insert」→「Group」,选择刚才的
{@TableGroup}字段) - 把第一个表格放在Group Header节里,第二个表格放在Group Footer节里
- 右键原Details节,选择「Format Section」,勾选「Suppress (No Drill-Down)」,把默认的明细行隐藏掉
- 这样报表会先显示Group Header里的表1所有内容,再显示Group Footer里的表2所有内容,完美分离
额外提示
如果你不需要第二个表格出现在每一页底部,记得检查Report Footer的「New Page Before」选项——如果不想换页,就不要勾选这个选项。
内容的提问来源于stack exchange,提问作者Mekan FLores
相关产品推荐
相关产品推荐

