我的报告按两个代码分组,我们称之为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
然后,在每个详细信息行,以及组页脚1和组页脚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
,但无法取消组标题。
我到底在做什么?我能采取更好的方法吗?
答案 0 :(得分:3)
我建议将“父名称”字段放在其自己组的组标题中,而不是放在页眉中。然后,在父组和子组中,选中“组选项”对话框中的“在每页上重复组标题”复选框。