2010-10-29 50 views
1

我有一个由两个代码组成的报告,我们将其称为ParentChildCrystal 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,但未能抑制组头。

我在这里做错了什么?我可以采取更好的方法吗?

回答

3

我建议把'父名'字段放在它自己组的组头中,而不是放在页头中。然后,在父组和子组中,选择组选项对话框中的“在每个页面上重复组标题”复选框。

+0

你知道吗,这真的很尴尬 - 不知何故,我从未注意到复选框在Group Options对话框,我正在寻找类似于Format Group选项的东西,它仍然不能解释代码为什么不起作用,但我很乐意继续前进。 – LittleBobbyTables 2010-10-29 14:50:53

+2

我很高兴它为你工作。在某些情况下,我曾经使用过像在内置属性并未完全切断它的情况下使用的变量,并且使它正常工作始终是一场噩梦。 – Ray 2010-10-29 15:36:20