我有一个由两个代码组成的报告,我们将其称为Parent
和Child
。Crystal Reports组标题抑制公式不起作用
在页面的顶部,在页眉中,我想打印父母名称。
报表中有许多列,当组中断时,我想再次显示新的子名称以及列标题。报告应该是这个样子:
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;
最后,在各组头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页到报告中,我得到完全,虽然;一个Page Header记录,后跟一个Group header 2记录。如果我创建一个包含条件禁止公式的公式,它将显示TRUE
,但组标题仍然不会抑制。
如果我分解代码,以便它只检查其中一个条件(PageNumber <> 1
或),则组标题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
,但未能抑制组头。
我在这里做错了什么?我可以采取更好的方法吗?
你知道吗,这真的很尴尬 - 不知何故,我从未注意到复选框在Group Options对话框,我正在寻找类似于Format Group选项的东西,它仍然不能解释代码为什么不起作用,但我很乐意继续前进。 – LittleBobbyTables 2010-10-29 14:50:53
我很高兴它为你工作。在某些情况下,我曾经使用过像在内置属性并未完全切断它的情况下使用的变量,并且使它正常工作始终是一场噩梦。 – Ray 2010-10-29 15:36:20