根据用户选择重复 header

Repeat header based on user choice

我有一个 report 子报表,其中包含一个组并选中了 "Repeat group header in each page" 选项。但我需要用户能够选择是否在每个页面上显示组 header,或者只在组第一次出现时显示。

我设置了一个复选框让他们选择,但我如何使用它告诉报告不要在 运行 时间内重复 header?

更新

做子报表我不知道哪个页面会第一次出现,我不能重新开始编号,因为它是报表所必需的。

我在 VS2005 中使用 CrystalReports,在 VS2010 中编写 C#,我在一家公司工作,无法升级。

我正在尝试在 C# 中使用 FormulaFieldDefinition,但我不知道如何使用。

我不确定您使用的是哪个版本的 Crystal 报告,但在 Crystal 2011.

相反,您可能需要解决以下问题:

  1. 创建一个布尔参数 {?GroupHeader} 其中 true 表示 "show the group header on every page."
  2. 创建页眉。
  3. 将您的组页眉元素复制到新页眉中。
  4. 在“部分专家”下的新页眉部分创建抑制公式。 if PageNumber > 1 and {?GroupHeader} = true then false else true.

这可以通过 sub-report 中的变量来完成。

创建一个包含以下内容的 formula-field 并将其放置在 detail-section 中的某个位置:

WhilePrintingRecords;
booleanVar headerPrinted := True;

在group-header的suppresion-formula中放置以下代码:

WhilePrintingRecords;
booleanVar headerPrinted;

公式将在打印第一个详细信息后立即将变量设置为 True
因此抑制公式仅在第一次打印组 header 时计算为 False,随后每次打印时计算为 True

因此,使用布尔参数 {?GroupHeader} 选择是否应打印 header,suppression-formula 将如下所示:

WhilePrintingRecords;
booleanVar headerPrinted;

If {?GroupHeader} And headerPrinted Then
    True
Else
    False

{?GroupHeader} = True 表示:只显示 group-header 一次。