【问题标题】:passing multivalue parameter to stored procedure将多值参数传递给存储过程
【发布时间】:2011-07-12 08:41:03
【问题描述】:

我在将多个参数传递给水晶报表存储过程时遇到了麻烦。我有一个存储过程,只要 ?StockNumber 参数是单值,它就可以正常工作。 当我尝试将其更改为多值时,会发生 2 件事:是否显示消息:“此存储过程不能接受多个值”。或者如果尝试直接启用过程中的参数以接受多个值,它只会关闭应用程序而不会出现任何错误。 据我了解,这是存储过程的限制,而不是水晶报告。 无论如何,我需要解决这个问题。我只是不知道如何在水晶报表环境中操作参数。请讨论。谢谢!

   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}'

【问题讨论】:

    标签: stored-procedures crystal-reports report


    【解决方案1】:

    我不是水晶报告专家,但通常在尝试将多值传递给 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 
    

    【讨论】:

    • 是的,这就是我要说的。我不知道如何从水晶报表中的参数创建这样的字符串。
    • @user194076 希望我在编辑中发布的那段代码能够满足您的需求。
    猜你喜欢
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多