You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Group Footer 2未显示时抑制Group Header 1的显示?

Crystal Reports:隐藏无有效子组的Group Header 1

需求背景

当Group Footer 2因无记录或全部被抑制而不显示时,自动隐藏对应的Group Header 1。当前已为Group Footer 2设置抑制条件:ISNULL({qty}) OR {@datum} > 90 OR {aantal} = 0(其中{@datum}公式为date('9/1/2022') - {table.date})。

报表结构

IACode Group header #1 [Description] 
ICode  Group header #2
Details               | itemcode | date | aantal |   qty (suppressed)
ICode  Group footer #2| itemcode | date | (SUM)aantal | SUM(qty) 
IACode Group footer *1

当前问题示例

当前输出会显示无有效数据的组页眉:

ABC Company (no data)
Helios Corporation     
     xx1001 09/10/2022 200 100
     xy2091 09/22/2022 125 099
Super Tech Company
     yy2222 01/10/2021 100 234 (suppressed as per suppress condition)

期望输出

仅保留有有效子组内容的组页眉:

Helios Corporation
     xx1001 09/10/2022 200 100
     xy2091 09/22/2022 125 099

解决方案步骤

1. 初始化共享变量

在Group Header 1的「抑制(无 Drill-Down)」公式中添加变量初始化代码:

Shared BooleanVar has_valid_footer := False;
False; // 暂不主动抑制Group Header 1,后续由变量判断

修改Group Footer 2的「抑制(无 Drill-Down)」公式,加入变量更新逻辑:

Shared BooleanVar has_valid_footer;
// 保留原抑制条件
Local BooleanVar suppress_current := ISNULL({qty}) OR {@datum} > 90 OR {aantal} = 0;

// 如果当前Footer不被抑制,标记该Group 1下存在有效内容
If Not suppress_current Then
    has_valid_footer := True;

// 返回原抑制结果
suppress_current;

3. 设置Group Header 1的最终抑制逻辑

回到Group Header 1的「抑制(无 Drill-Down)」公式,修改为:

Shared BooleanVar has_valid_footer;
// 若没有任何有效Group Footer 2,就抑制Group Header 1
Not has_valid_footer;

原理说明

通过共享布尔变量has_valid_footer追踪当前Group 1下是否存在未被抑制的Group Footer 2:

  • 在Group 1开始时初始化变量为False
  • 遍历每个Group 2的Footer,若有未被抑制的Footer则将变量设为True
  • 最后根据变量值判断是否隐藏Group Header 1

内容的提问来源于stack exchange,提问作者gzesasaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 15:35:24