我正在尝试创建一个接受报告的多个值的参数。如果我只选择一个集合操作但是当我尝试选择多个时,报告会运行一个过程并且有效,我得到:
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。
这一切都适用于选择的单个集合操作,但不适用于多个。
对于我可能错过的任何建议,允许在参数中选择多个值?
谢谢,
答案 0 :(得分:0)
我知道这是一个棘手的问题:我将推荐一些解释如何执行此操作的文章。
一个来自Scott Murray,另一个来自Jeff Moden(斯科特实际上是指杰夫在他的文章中)。
对于存储过程,您可以执行以下操作
斯科特解释说:首先,我们将连接的多值参数作为单个实体传递,并且我们使用varchar参数(必须足够大以接受可能选择的所有参数的最大长度)。接下来使用拆分器功能,将值解析出来并放入临时表#YEAR_LIST。最后,年份标准从where子句的一部分转移到成为连接的一部分。
还有其他方法,但这应该可以解决问题。
希望这有帮助!
答案 1 :(得分:0)
只需使用逗号分隔符连接多值参数(数据集 - > Paremeter->表达式)
在storedprocedure中,通过分隔符(,)拆分输入值。然后使用交叉应用
处理查询中的值