抑制水晶报告子报告中的标题

时间:2013-05-23 11:49:51

标签: crystal-reports subreport

我的报告应该具有以下结构:

Group A.1
  Header 1
    Record Q.1
    Record Q.2
  Header 2
    Record P.1
Group A.2
  Header 1
    Record Q.3
  Header 2
    Record P.2
    Record P.3
....

但是,我一直得到的是:

Group A.1
  Header 1
    Record Q.1
  Header 1
    Record Q.2
  Header 2
    Record P.1
Group A.2
  Header 1
    Record Q.3
  Header 2
    Record P.2
  Header 2
    Record P.3
....

我的数据来自两个在组密钥(A)上链接在一起的数据集。我在小组的详细信息部分尝试了两个子报告。为每条记录(Q.1Q.2)呈现子报告,这是有道理的。但是,我想抑制除第一个之外的每个记录的标题。我似乎无法弄清楚如何实现这一目标。

我试过没有子报告,但我不知道如何在详细信息部分内确定我是在第一条记录(Q.1)还是第二条记录(Q.2)。

我还尝试创建两个额外的相邻子组而不是嵌套组,但这似乎根本不可能。我只能保持嵌套子组,而不是将子组放在彼此旁边。

我的数据结构如下(来自Oracle数据库):

Dataset 1                        Dataset 2
Group A.1 | Record Q.1           Group A.1 | Record P.1
Group A.1 | Record Q.2           Group A.2 | Record P.2
Group A.2 | Record Q.3           Group A.2 | Record P.3

2 个答案:

答案 0 :(得分:1)

您可以在子报表中添加一个名为suppresshead的参数,然后您可以将其链接到一个正在运行的总计字段,该字段会在组字段更改时重置每个记录。

答案 1 :(得分:1)

由于子报表的评估时间,我不确定这是否有效,但您可以给它一个旋转:尝试使用共享变量作为开关来确定是否应该抑制子报表头

例如,在子报表的标题中,您可以使用一个公式来检查最后一个子报表组值是否与当前子报表相同;如果是,则取消标题。

//initialize the shared variable in header of main report
whileprintingrecords;
shared stringvar lastSubVal := "";

//in the suppression formula for the subreport header, check the variable
//  to see if the last subreport header is the same as the current one (and suppress if true)
whileprintingrecords;
shared stringvar lastSubVal;

{table.currentGroupValue} = lastSubVal

//finally, in the subreport footer, just update lastSubVal
whileprintingrecords;
shared stringvar lastSubVal := {table.currentGroupValue}