1

我對Crystal Reports(2天前)非常新,我試圖循環訪問stringsarray並檢查特定值。如果該值存在,則修改該值。Crystal Reports 2008中的數組操作 - 無法顯示正確的結果

我正在記錄選擇公式中做所有這些。但是代碼並不像預期的那樣運行。請讓我知道的代碼的問題: -

Local numberVar i; 

For i := 1 to ubound({?Partner_Name}) Do 

(

    IF {?Partner_Name}[i] = 'Lincoln - MN' Then 
      {?Partner_Name}[i] = 'Lincoln' 
    Else If{?Partner_Name}[i] = 'LINCOLN - UT' Then 
      {?Partner_Name}[i] = 'LINCOLN' 
    Else 
      {?Partner_Name}[i] = {?Partner_Name}[i] 
); 

{Command.PARTNER_NAME} = {?Partner_Name} 

任何幫助事先

+0

您是否收到任何錯誤?或沒有得到要求ouptpu?你確切的問題是什麼?是特定的 – Siva

+0

@Siva - 我沒有得到所需的輸出,它不會按照標準 – abhu85

+0

更改值您不能將值重新分配給'參數字段'。而且,你不能在'parameter field'上使用'UBound()'。你希望完成什麼? – craig

回答

0

這將「編譯」感激..感謝:

Local Numbervar i; 
// assign multi-select parameter to string array 
Local Stringvar Array partners := {?Partner_Name}; 

For i := 1 To Ubound(partners) Do (
    Select partners[i] 
    Case "Lincoln - MN": partners[i]:="Lincoln" 
    Case "LINCOLN - UT": partners[i]:="LINCOLN" 
); 

// this line will raise an exception; you can't reassign the value 
{?Partner_Name}:=partners; 

// display the value 
Join(partners, ", "); 

... 
+0

haaaa你比我快了9秒:) – Siva

0

這裏有一個解決方法。這不是一個測試過的。而不是將參數值存儲在參數字段中。嘗試不同的方式。

  1. 創建一個參數,其中選擇了多個輸入。
  2. 然後創建一個陣列和寫代碼:
Local numberVar i; 
Local StringVar array a; 
Local StringVar array b:=join({?Partner_Name},","); 

// Not sure which function works here currently don't have CR tool 
For i := 1 to ubound(b) Do  
(

    IF {?Partner_Name}[i] = 'Lincoln - MN' Then 
      a := 'Lincoln' 
    Else If{?Partner_Name}[i] = 'LINCOLN - UT' Then 
      a := 'LINCOLN' 
    Else 
      a := {?Partner_Name}[i] 

); 

3.現在在選擇配方奶粉是這樣的:

{Command.PARTNER_NAME} IN a 

讓我知道如何去。

+0

你的代碼無法工作。您不能以這種方式將值分配給'參數字段',也不能獲得其'ubound()'。 – craig

+0

檢查編輯的答案..希望它現在可以工作。 – Siva

+0

@Siva - 感謝您的代碼。但它給了我一個錯誤「The)失蹤」。我很確定所有大括號都完整。不知道錯誤是什麼意思 – abhu85