我遇到了将多个参数传递给crystal report存储过程的麻烦。我有一个存储过程,只要工作正常吗?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}'
答案 0 :(得分:3)
我不是水晶报告专家,但通常在尝试将多值传递给SQL中的存储过程时,接受的方法是将其作为逗号分隔的字符串传递给
item1, item 2, item 3
然后你只需编写一个可以用逗号分割它们的函数并返回一个集合。
编辑:同样,我对水晶报道一无所知,但我做了一些研究,发现了另一个论坛的摘录。它讨论了如何将多标识符用作逗号分隔的字符串:
如果你的多值参数是 键入字符串,你可以把它放在 公式定义的扁平化 参数
{flattened_parameter}:
Join({?YourMultiValueParameter},",")
e.g. {?YourMultiValueParameter}[1] = US
{?YourMultiValueParameter}[2] = Canada
{?YourMultiValueParameter}[3] = UK
=> {flattened_parameter} = US, Canada, UK