2011-03-10 128 views
0

我遇到了將多個參數傳遞給水晶報表存儲過程的麻煩。我有一個存儲過程,只要?StockNumber參數是單個值就可以正常工作。 當我嘗試將其更改爲多值時,會發生兩件事情:是否顯示一條消息:「此存儲過程無法接受多個值」。或者如果嘗試直接在過程中啓用參數來接受多個值,它只是關閉一個應用程序而沒有任何錯誤。 據我瞭解,這是存儲過程的限制,而不是水晶報告。 反正我需要解決這個問題。我只是不知道如何在水晶報表環境中操作參數。請討論。謝謝!將多值參數傳遞給存儲過程

SELECT 
     "table1"."StockNum" 
     , "table1"."StockOnhand" 
     , "table1"."StockNumber" 
     , "table1"."StockLocation" 
     ,"table2"."StockDesc" 
     ,"table2"."StockDesc2" 
     , "TotalSoldItems"."SoldItems" 
    FROM 
     "AAG1"."DB2"."table1" "table1" 
    LEFT JOIN 
    (
    SELECT 
     SUM ("StockNumAA"."StockNumQuantity") "SoldItems" 
     , "StockNumAA"."from" 
    FROM  
     "AAG1"."DB2"."StockNumAA" "StockNumAA" 
    WHERE "StockNumAA"."code"='BB' 
     AND "StockNumAA"."StockNumber" = '{?3PartNumber}' 
     AND ("StockNumAA"."date">={?1StartDate} 
     AND "StockNumAA"."date"<={?2EndDate}) 
    GROUP BY 
     "StockNumAA"."from" 
    ) "TotalSoldItems" 
    ON "table1"."StockLocation" = "TotalSoldItems"."from" 
    LEFT JOIN 
    "AAG1"."DB2"."table2" "table2" 
    ON "table1"."StockNumber" = "table2"."Stocknumber" 
    WHERE "table1"."StockNumber" = '{?Stocknumber}' 

回答

3

我沒有晶體報告專家,但通常試圖多值傳遞給在SQL存儲過程中被接受的方法是將它通過像這樣

item1, item 2, item 3 

然後逗號分隔的字符串時你只需編寫一個可以用逗號分隔它們並返回一個集合的函數。

編輯:再一次,我對晶體報告一無所知,但我做了一些研究,並找到了另一個論壇的摘錄。它討論瞭如何使用多indentifier作爲一個逗號分隔的字符串:

如果多值參數是 字符串類型,你可以把這個處於平坦 參數的 公式定義

{flattened_parameter}: 
Join({?YourMultiValueParameter},",") 
e.g. {?YourMultiValueParameter}[1] = US 
{?YourMultiValueParameter}[2] = Canada 
{?YourMultiValueParameter}[3] = UK 
=> {flattened_parameter} = US, Canada, UK 
+0

是的,這就是我所說的。我不知道如何從水晶報告中的參數創建這樣一個字符串。 – user194076 2011-03-10 00:38:22

+0

@ user194076希望我發佈在我的編輯中的代碼能夠滿足您的需求。 – 2011-03-10 02:52:29

相關問題