2010-10-29 75 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