SSRS参数不接受多个值

时间:2015-01-28 17:42:27

标签: parameters ssrs-2008 parameter-passing

我正在尝试创建一个接受报告的多个值的参数。如果我只选择一个集合操作但是当我尝试选择多个时,报告会运行一个过程并且有效,我得到:

An error has occurred during report processing.
Query execution failed for dataset 'proc_Incentives'
Error converting data type nvarchar to int

在我的程序中,我将@CO_ID int声明为变量。

在WHERE子句中,我在(@CO_ID)中设置CO.CodeID。

此外,CO.CodeID作为INT存储在数据库中。

在我的SSRS报告中,我创建了一个名为'prmCollectionOp'的新数据集,其中我写了一个简单的查询:

Select CodeID, Description from IDViewCollectionOp Order by Description;

然后我创建了一个名为'CO_ID'的新参数,并使数据类型为Integer并选中了“允许多个值”。

在“可用值”下,我选择了从查询中获取值,选择了prmCollectionOp并在值字段中放置了CodeID,在标签字段中放置了描述。

对于默认值,我还选择了从查询获取值并选择了数据集prmCollectionOp,其值字段为CodeID。

这一切都适用于选择的单个集合操作,但不适用于多个。

对于我可能错过的任何建议,允许在参数中选择多个值?

谢谢,

2 个答案:

答案 0 :(得分:0)

我知道这是一个棘手的问题:我将推荐一些解释如何执行此操作的文章。

一个来自Scott Murray,另一个来自Jeff Moden(斯科特实际上是指杰夫在他的文章中)。

对于存储过程,您可以执行以下操作

斯科特解释说:

  

首先,我们将连接的多值参数作为单个实体传递,并且我们使用varchar参数(必须足够大以接受可能选择的所有参数的最大长度)。接下来使用拆分器功能,将值解析出来并放入临时表#YEAR_LIST。最后,年份标准从where子句的一部分转移到成为连接的一部分。

还有其他方法,但这应该可以解决问题。

希望这有帮助!

答案 1 :(得分:0)

只需使用逗号分隔符连接多值参数(数据集 - > Paremeter->表达式)

在storedprocedure中,通过分隔符(,)拆分输入值。然后使用交叉应用

处理查询中的值

Dataset properties Parameter mapping expression