【问题标题】:Is it possible to suppress a group header based on various conditions in details?是否可以根据各种条件详细抑制组头?
【发布时间】:2016-03-03 23:46:26
【问题描述】:

我的报告包含第 1 组和第 2 组。出于格式化目的,第 2 组页眉和详细信息被隐藏,所有信息都显示在第 2 组页脚中。如果满足某个条件,我已经设置了报表以抑制第 2 组页脚,这意味着有时第 1 组页眉下的整个部分都是空白的,我想抑制它。

这是它的设置方式

第 1 组 - 员工 第 2 组 - 客户(被抑制) 详细信息(抑制) 客户名称 field1 field 2 field 3 field 4

对于字段 1-4,可能返回“Draft”、“Final”和 null。我只是在寻找“草稿”和空值。

所以我设置第 2 组页脚的方法是只返回客户名称和一个总结所有四个字段值的公式 {@draft}

if {#divDraft} + {#convoDraft} + {#yearDraft} + {#rovDraft} >= 1 then "Draft" else if {#divFinal} + {#convoFinal} + {#yearFinal} + {#rovFinal} >= 1 then "Final" else " "

然后我根据 {@draft} 返回“final”来抑制页脚

如果该组中的每个客户端都将所有四个字段都返回为 null 或至少一个返回为草稿,是否可以禁止组 1 标头?

我尝试运行一个子报表,然后将它和一个共享变量放在第 1 组标题中,但这不起作用

WhilePrintingRecords; Shared NumberVar totalSuppress; Global NumberVar suppression; suppression := Shared NumberVar totalSuppress;

共享报告中的 {@totalSuppress} 公式添加了至少返回一个“草稿”的次数以及所有四个字段为空的次数。我将它放在子报表的页脚中,然后将 {@suppression} 放在主报表组标题中。

我得到的是一个模式,其中第一个组页眉返回 0.00,它有 4 个结果,组页脚中返回 4.00。然后下一组在组页眉中有 4.00,在组页脚中有 1 个结果和 1.00。下一个在组头中有 1.00,依此类推。

我试图做一个公式来重置每个组标题的变量。所以我写了

Global NumberVar suppression; suppression := 0

但所做的只是在组标题中返回 0.00。

欢迎任何其他想法。

RE:尝试了新公式

if {sales_div.draft_pend_approv_Value} = "Draft" or {sales_div.draft_pend_approv_Value}  = "Pending Approval"
or {convoSales_200.pending_approval_Value} = "Draft" or  {rov_client.pend_draft_Value} = "Draft"
or {yearly_sales.draft_pend_Value} = "Draft") then 1
else if isnull({sales_div.draft_pend_approv_Value}) and
isnull({convoSales_200.pending_approval_Value}) and   isnull({rov_client.pend_draft_Value})
and isnull({yearly_sales.draft_pend_Value}) 
then 1
else 0

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    如果我理解正确,您正在尝试使用 Running Total Field 的结果来隐藏页眉 - 因为运行总计仅在页脚中计算,所以这不起作用。

    您可以尝试不同的方法。制作一个公式字段,该字段将进入您的详细信息部分。它应该简单地检查该行是否是您要显示的那种,例如:

    if (isnull({field1}) or isnull({field2}) or ... or {field1} = 'Draft' or {field2} = 'Draft' ...)
    then 1 else 0
    

    然后在 Group Header #1 中,在 Section Expert 中,在 Suppress 公式中放置

    sum({@check},{Employee})=0
    

    其中 {@check} 是公式字段,{Employee} 是创建 Group 1 的字段

    【讨论】:

    • 我尝试了稍作修改,以考虑到如果所有 for 字段都返回 null,那么我需要保持组标头不被抑制。我输入了我在原始帖子中使用的公式。
    猜你喜欢
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2014-03-31
    • 2020-07-16
    • 1970-01-01
    相关资源
    最近更新 更多