如何在Crystal Report中定位每页最后一个组以控制组页脚显示?
实现每页仅显示最后一个组的组页脚(Crystal Reports)
针对你勾选了「Keep Group Together」的多组报表,可通过共享变量追踪每页的组序号与总数,实现仅显示每页最后一个组的组页脚,步骤如下:
- 初始化共享变量
在报表页眉添加一个公式(可设置为隐藏),用于初始化计数变量:
- 初始化共享变量
WhilePrintingRecords; Shared NumberVar page_group_count := 0; Shared NumberVar current_group_num := 0;
WhilePrintingRecords 必须添加,确保变量在打印阶段计算,而非数据读取阶段。
- 追踪每页组的序号与总数
在目标组的组头添加一个公式(同样可隐藏),用于更新计数:
- 追踪每页组的序号与总数
WhilePrintingRecords; Shared NumberVar page_group_count; Shared NumberVar current_group_num; // 切换新页面时重置计数 If PageNumber <> Previous(PageNumber) Then ( page_group_count := 0; current_group_num := 0; ); current_group_num := current_group_num + 1; page_group_count := page_group_count + 1;
因为已勾选「Keep Group Together」,组不会跨页,所以每页的组计数会准确重置。
- 设置组页脚的抑制规则
打开目标组的组页脚的「格式编辑器」,在「抑制(Suppress)」的公式编辑器中输入:
- 设置组页脚的抑制规则
WhilePrintingRecords; Shared NumberVar page_group_count; Shared NumberVar current_group_num; // 仅当当前组是本页最后一个时,不抑制显示 current_group_num <> page_group_count
这个公式会让非本页最后一个组的页脚被隐藏,只有最后一个组的页脚显示。
注意事项
- 若报表有多层组(如组1、组2),需针对你要控制的组层级设置上述公式,不要混淆组头/组页脚的层级。
- 所有涉及变量的公式必须包含
WhilePrintingRecords,否则计数逻辑会失效。
内容的提问来源于stack exchange,提问作者YASH
相关产品推荐
相关产品推荐

