2012-08-17 105 views
1

是以下可能使用Crystal Reports?顯示父子報告

表A

ID Boo Far 
1 Test 15 
2 Tast 24 

表B

Foo Bar ParentID 
A 1 1 
B 2 1 
C 3 1 
A 17 2 
c 18 2 

而且我想Withou使用交叉表我的報告看起來像

ID Boo Far A B C 
1 Test 15 1 2 3 
2 Tast 24 17 18 

?因爲使用交叉表,我得到標題A,B,C但不能顯示ID,Boo和Far的標題。另外,我可以對每條記錄的A,B和C進行行總結,但是我無法爲所有記錄創建所有B的列總和。

我已經嘗試創建一個不錯的小組,通過,但是這給了我類似的結果:

ID Boo Far 
1 Test 15 
      Bar 
      1 
      2 
      3 

這似乎正常的,當然。但是我(或者客戶......)不希望這樣。

任何幫助?

回答

2

上創建{表A.ID}的基團 添加表A字段組報頭部分;抑制組頁腳節

創建三個公式:

// {@a} 
If {Table B.Foo}='A' Then {Table B.Bar} 
Else 0 

// {@b} 
If {Table B.Foo}='B' Then {Table B.Bar} 
Else 0 

// {@c} 
If {Table B.Foo}='C' Then {Table B.Bar} 
Else 0 

添加到細節部分。隱藏細節部分

插入摘要字段在每個這些配方。移到組頭部分;與列標題對齊。

+0

太棒了。奇蹟般有效! – 2012-08-22 19:07:58

0

您可以使用變量來跟蹤每一個項,B,C中值的表A

  1. 請您已設置了{} TableA.ID分組。將要顯示的所有項目移到組頁腳中。
  2. 在(現在是空的)組頭,初始化/ REDIM大小的數組3.
  3. 在(現在是空的)詳述部分中,有條件地更新陣列,使得索引1包含用於「A」的值,2「B」,等等。就像這樣:

    whileprintingrecords; 
    numbervar array myArray; 
    select {TableB.Foo} 
    case 'A' : myArray[1]:={tableB.Bar} 
    case 'B' : myArray[2]:={tableB.Bar} 
    case 'C' : myArray[3]:={tableB.Bar} 
    default : 0 //handle error case
  4. 禁止該組頭和細節兩部分,因此它們不會顯示在您的報告。現在
  5. ,在組頁腳你應該有訪問所有tableB的爲A,B,C對應的值的TableA中每個父記錄。

注意:所有的公式都需要使用whileprintingrecords;才能正常工作。

0

我會用交叉表對象,但我不知道你的數據應該有的樣子。

爲了解決:

無法顯示ID,啵和遠頭。

您可以將它們組合成一個新列以顯示爲rowheader。它們不會顯示爲單個列,如A,B和C,只是一個用於元組。

到地址:

我無法創建所有B的所有記錄的列總和。

我引入一個新的行,最後排序,包含數據源中每個組的所有總和。