2

進出口使用Crystal Reports和我有一個這樣的輸出:水晶報表1場應在同一行

 NumberId   ART_No   InkColor 
    ------------------------------------------ 
    0010    23003    BLUE 
    0010    23003    RED 
    0010    23003    GREEN 
    0013    23004    ORANGE 
    0013    23004    PINK 
    0013    23004    WHITE 
    0015    23007    GREEN 
    0015    23007    PINK 

是否有任何可能的方式我怎樣才能使輸出(在Crystal Reports)是這樣即使不使用SQL腳本:

 NumberId   ART_No   InkColor 
    ------------------------------------------ 
    0010    23003    BLUE, RED, GREEN 
    0013    23004    ORANGE, PINK, WHITE 
    0015    23007    GREEN, PINK 

感謝

回答

2

你需要做一些事情來實現這一目標。

  1. NumberId創建一個組。

  2. 抑制組頭。

  3. 創建一個FormulaField;我們將其稱爲@ColorReset。它應該包含以下代碼:

     
    WhilePrintingRecords; 
    stringVar Colors := ""; 
    

    將其放置在您的組標題中。這會在每次擊中組頭時重置Colors stringVar。

  4. 取消「詳細信息」部分。

  5. 創建另一個FormulaField;我們將其稱爲@ColorAppend。它應該連接像這樣的值:

     
    WhilePrintingRecords; 
    stringVar Colors := Colors + ", " + {YourTable.InkColor}; 
    

    將其放置在您的詳細信息部分。這將在每次Detail部分循環時建立您的顏色字​​符串。

  6. 創建一個更多的FormulaField以顯示顏色,稱爲@ColorsShow。它會顯示的顏色是這樣的:

     
    WhilePrintingRecords; 
    StringVar Colors; 
    
    RIGHT(Colors, LEN(Colors) - 2); // Strip off the leading comma and space 
    

    將此放在您的組尾,沿NumberIdART_No


你的最終結果應該是:

---------- Group Header 1 ---------- 
/////////// @ColorReset //////////// 

------------- Details -------------- 
////////// @ColorAppend //////////// 

---------- Group Footer 1 ---------- 
[NumberId] [ART_No] [@ColorsShow] 

它看起來有點過頭,但它非常簡單。

+0

這帶來一個警告:如果嘗試連接255個或更多字符,某些版本的Crystal Reports可能會炸燬。根據您的版本,您可能會遇到連接限制。 – LittleBobbyTables

+0

謝謝你的作品.. :) – Captain16