1

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

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.1为每条记录(和)呈现子报告Q.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
4

2 回答 2

1

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

于 2013-05-23T12:24:43.693 回答
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}
于 2013-05-23T15:15:24.037 回答