2013-10-08 20 views
1

我在細節部分的記錄級聯不同的值內的晶體一個列報告

實施例:

Column1----Column2 
value_1----5678976 
value_2----7263535 
value_1----1938773 
value_2----3333445 
value_3----2848465 

因此,在報告標題,我需要指定從column1的所有獨特的值,逗號分隔。從提到的例子正確的字符串將是:

value_1,value_2,value_3 

我試圖用公式

WhilePrintingRecords; 
shared stringvar final_result; 
shared stringvar current_value; 

if len(final_result) = 0 then final_result = ""; 

current_value:= {Column1}; 
final_result := final_result+ "," + current_value; 

這是行不通

嘗試不同的一個

WhilePrintingRecords; 
stringVar final_result := ""; 
final_result = final_result + (
if InStr(final_result, {Column1}) > 0 then "" 
else final_result := "," + {Column1}; 
); 

還沒有結果。 我哪裏錯了?

感謝

回答

1

爲了使公式顯示任何東西,你需要聲明後,他們致電值。 所以,你的公式應看起來更像是這樣的:

WhilePrintingRecords; 
shared stringvar final_result; 
shared stringvar current_value := {Column1}; 
if len(final_result) < 1 then final_result := {Column2}; 
final_result + ", " + current_value 

的問題是,你只會得到一個創下自該公式是在報表頁眉。如果您創建了一個數組並嘗試將其顯示在報告標題中,也會發生同樣的情況。我認爲你最好的選擇是創建一個子報表,然後顯示在報表頭中。

乾杯,

克里斯

編輯:這我花了一段時間,但我想,我終於得到它。關鍵是WhileReadingRecords和WhilePrintingRecords之間的區別。您需要在閱讀記錄時填寫第一個公式,這將確保當您實際顯示數據時(WhilePrintingRecords),標題中的公式會顯示一些內容。所以這裏有雲: 一級方程式(發生在詳細信息部分):

WhileReadingRecords; 
stringvar array a; 
numbervar i; 
if not({Column1} in a) then 
(
i := i + 1; 
redim preserve a[i]; 
a[i] := {Column1}; 
); 
a[i] 

公式2(發生在報告標題):

WhilePrintingRecords; 
stringvar array a; 
stringvar fin; 
numbervar j; 
for j := 1 to ubound(a) do 
(
fin := fin + a[j] + ", "; 
) 
fin 

希望這個作品現在。 - 克里斯

+0

當我繼承這個報告,我有這個事情工作。但偶爾我刪除了報告的原始版本。所以我很確定這可以通過在報表標題級和沒有子報表的情況下解決。謝謝你的提示,在聲明後調用這個值。 – user2858200

+0

請在我原來的答案中看到編輯。 –

+0

克里斯,當你在莫斯科時,啤酒就在我身上!謝謝。 – user2858200