我有一份按两个代码分组的报告,我们称它们为Parent
和Child
。
在每一页的顶部,在页眉中,我想打印父名称。
报告中有许多列,当分组中断时,我想再次显示新的子名称以及列标题。报告应如下所示:
Parent Name
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
XXXX XXXX XXXX XXXX XXXX XXXX
XXXX XXXX XXXX XXXX XXXX XXXX
Child Total: XXXX
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
XXXX XXXX XXXX XXXX XXXX XXXX
但是,如果子组环绕到新页面,我想在再次显示数据之前重新显示子名称和列标题。
为此,我创建了一个包含以下对象的页眉:
Parent Name
Child Name
Col1 Col2 Col3 Col4 Col5 Col6
页眉中有一个变量RowReset
,其中包含以下公式:
WhilePrintingRecords;
Shared numberVar nRowCount := 0
然后,在每个详细信息行以及 Group Footer 1 和 Group Footer 2 部分中,我有以下RowIncrement
公式:
WhilePrintingRecords;
Shared numberVar nRowCount := nRowCount + 1;
最后,在每个 Group Header 2 部分中,我有以下条件抑制公式:
WhilePrintingRecords;
Shared numberVar nRowCount;
IF (PageNumber <> 1) AND (nRowCount = 0 OR nRowCount = 0.00) THEN
True
ELSE
False
如果我们在一个全新的页面上,并且还没有打印任何详细记录,那么这个尝试做的是抑制子组标题,以防止发生以下情况:
Parent Name ---+
Child Name +-- Page header
Col1 Col2 Col3 Col4 Col5 Col6 ---+
Child Name ---+-- Group header 2
Col1 Col2 Col3 Col4 Col5 Col6 ---+
出于某种原因,我无法弄清楚,报告大约有 40 页,但我确实明白了;一个页眉记录,后跟一个组页眉 2 记录。如果我创建一个包含条件抑制公式的公式,它会显示TRUE
,但组标题仍然不抑制。
如果我分解代码以便它只检查一个条件(PageNumber <> 1
或nRowCount = 0
),那么组标题 2 会正确抑制。
我什至尝试过这样做来解决问题:
WhilePrintingRecords;
Shared numberVar nRowCount;
booleanVar bSuppress:= False;
IF PageNumber <> 1 THEN bSuppress:= True;
IF (bSuppress) THEN (IF nRowCount = 0 THEN True ELSE False);
它True
在屏幕上显示时也会显示,但无法抑制组标题。
我到底在这里做错了什么?我可以采取更好的方法吗?