2013-04-12 130 views
0

我寫具有以下stucture一個crytal報告格式問題:Crystal報表與公式字段

Group 1: School 
    Group 2: Student 
     Group 3: Category 
      Details 

我想詳細分成與公式字段兩個單獨列。這工作正常,除了其中一個公式字段打印在另一個之下,我無法弄清楚如何使它們在同一層上打印。

它看起來像這樣:

Category A  Category B 
detail 1 
detail 2 
       detail 1 
       detail 2 
       detail 3 

我希望它看起來像這樣:

Category A  Category B 
detail 1   detail 1 
detail 2   detail 2 
       detail 3 

我覺得我失去了一些東西很簡單,誰能幫幫我!

回答

0

不幸的是,這並不簡單。問題是,由於數據按類別分組,因此它會在下一個類別之前顯示所有類別。即使你採取了按類別分組,你還是會落得像數據:

Category A  Category B 
detail 1 
       detail 1 
       detail 2 
detail 2 
       detail 3 

有一種方式來獲得它正是你想要的方式,但每個類別下的整個結果集將被放入每個類別的一個字段中。如果您在屏幕上打印或查看它,這不是問題,但導出到Excel會將每列放入一個單元格;像這樣:

Category A  Category B 
+---------+  +---------+ 
|detail 1 |  |detail 1 | 
|detail 2 |  |detail 2 | 
+---------+  |detail 3 | 
       +---------+ 

爲了做到這一點,我們會創造什麼基本上是一個文本磨合總場(或兩個)。首先,報告標題中的初始化程序:

WhilePrintingRecords; 
Global StringVar CatA := ""; 
Global StringVar CatB := ""; 
""; //print nothing on screen 

然後,在詳細信息部分中更新。細節部分本身實際上是隱藏的(而不是被取消)。

WhilePrintingRecords; 
Global StringVar CatA; 
Global StringVar CatB; 

If {Table.Category} = "Category A" 
    //Chr(10) + Chr(13) is a return/newline 
    Then CatA := CatA + Chr(10) + Chr(13) + {Table.Detail}; 

If {Table.Category} = "Category B" 
    Then CatB := CatB + Chr(10) + Chr(13) + {Table.Detail}; 

""; //print nothing 

最後,相關的類別一切完成後(我假設在組2:學生頁腳),打印全局變量的結果。因此,對於A類:

WhilePrintingRecords; 
Global StringVar CatA; 

你將不得不確保結果字段設置爲Can grow

+0

EvilBob,這是一個很好的答案!我將在一個實現上述想法的版本上工作。我結束了使用子報表,但我有六個,所以你可以猜測它運行非常緩慢!希望你的方式能更快地工作。 –