【问题标题】:Crystal Reports - Suppressing a header in main report when sub-report is presentCrystal Reports - 当存在子报表时,在主报表中隐藏标题
【发布时间】:2012-03-09 06:12:58
【问题描述】:

大家好。

我正在运行 Crystal Reports 9。

我有一个列出一堆记录的报告,然后是一个仅包含图表的子报告。 对于显示子报告(图表)的页面,我想禁止显示主报告的页眉。

我似乎无法想出一个公式来测试图形/子报告是否存在以抑制主报告中的页眉。

感谢任何建议。

【问题讨论】:

  • 你能澄清你的问题吗?您的报告要么有子报告,要么没有 - 为什么需要测试是否存在子报告? (除非有条件地显示子报表,在这种情况下,您只需要使用相反的条件来显示页眉。)
  • 我的子报告总是被显示。 (图表包含在子报告中)。显示它的页码是可变的,并且仅在该页面上我希望抑制主报告页眉。我希望这足以澄清问题

标签: crystal-reports


【解决方案1】:

希望子报表/图表在它自己的部分?

  • 在报告的第一部分(报告标题 a)中插入一个新公式:global booleanvar no_header := false;
  • 在子报表部分正上方插入一个新部分,高度有效为 0。
  • 在此部分中插入一个新公式:global booleanvar no_header := true;
  • 在子报表部分插入一个新公式:global booleanvar no_header := false;
  • 在您的页眉条件抑制公式中输入公式:global booleanvar no_header;

您可能必须在所有这些公式前加上 whileprintingrecords;

你可能需要稍微调整一下我的建议,但希望你能明白吗?

【讨论】:

  • 这肯定会抑制所有页面之后子报告的标题,而不是页面子报告?
  • 不会这么想...要点 4 应该确保这一点?
  • 啊,是的——但是,bp 4 会立即覆盖 bp3(除非在 0 高度部分和子报告部分之间立即有分页符),这样页眉就永远不会被抑制?
  • 我(可能是错误地)假设子报告部分已检查“之前的新页面”
  • 我已经尝试过这个解决方案,它适用于我需要做的事情,谢谢大家的意见。我确实必须检查“之前的新页面”才能使其 100% 正常工作。
【解决方案2】:

在“部分专家”中,将其作为“抑制(无向下钻取)”的公式放在要隐藏的页眉下:

whileprintingrecords;
global booleanvar no_header;

然后在嵌入子报表的页脚部分,将这个公式用于“Underlay following Sections”:

whileprintingrecords;
global booleanvar no_header:= true

这样子报告开始时,它会隐藏你不想出现的页眉。

我希望这会有所帮助...:)

【讨论】:

  • 谢谢!非常有效。
【解决方案3】:

我建议:

  • 设置公式(称为 ChartPage 之类的名称)以确定子报表将显示在哪个页面上。
  • 使用如下公式有条件地抑制 PageHeader 部分:PageNumber={@ChartPage}

【讨论】:

    【解决方案4】:

    第 1 步:

    创建公式fPh(只是为了识别“公式页面标题”),但您可以提供任何名称。

    next({Command.PolicyID}) //which is any existing field from Main report
    

    保存并退出。

    第 2 步:

    转到报告,然后Section Expert并选择页眉

    Common标签下点击Suppress的公式按钮X-2并在下面输入

    PageNumber > 1 and isnull({@fPh})
    

    保存它,你就完成了......享受

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多