根据用户选择重复标题

时间:2018-02-09 12:54:37

标签: c# crystal-reports

我有一个报告子报告,其中包含一个组和选项"在每个页面中重复组标题"检查。但我需要用户能够选择是否在每个页面上显示组标题,或者只是第一次出现组。

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

更新

Beeing a Subreport我不知道哪个页面会首次出现,我无法重新开始编号,因为报告是必要的。

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

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

2 个答案:

答案 0 :(得分:0)

我不确定您使用的是哪个版本的Crystal Reports,但看起来不能为每个页面上的"重复组标题指定公式"在Crystal 2011的集团专家下。

相反,您可能需要做一些解决方法:

  1. 创建一个布尔参数{?GroupHeader},其中true表示"在每个页面上显示组头。"
  2. 创建页眉。
  3. 将您的群组标题元素复制到新的页面标题中。
  4. 在“部分专家”下的新页眉部分创建抑制公式。 if PageNumber > 1 and {?GroupHeader} = true then false else true

答案 1 :(得分:0)

这可以通过子报告中的变量来完成。

创建一个包含以下内容的公式字段,并将其放在详细信息部分的某个位置:

WhilePrintingRecords;
booleanVar headerPrinted := True;

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

WhilePrintingRecords;
booleanVar headerPrinted;

只要打印出第一个细节,公式就会将变量设置为True
因此,抑制公式仅在第一次打印组标题时评估为False,并在每个后续时间评估为True

因此,使用布尔参数{?GroupHeader}来选择是否应该打印标题,抑制公式将如下所示:

WhilePrintingRecords;
booleanVar headerPrinted;

If {?GroupHeader} And headerPrinted Then
    True
Else
    False

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