【问题标题】:SSRS - multi-value parameter is throwing error when more than one value is selectedSSRS - 选择多个值时,多值参数会引发错误
【发布时间】:2021-12-01 08:16:25
【问题描述】:

我正在使用安装了 SSDT 的 Visual Studios 2015。我无法显示我的查询,因为其中包含机密列。假设我有两个临时表,它们收集在 select 语句中连接的一般数据,并使用 where 子句接受文本数据类型的多值参数(列是 char(8))来过滤报告中的信息。我已经检查了参数属性中允许多个值。没有可用的值,用户输入值。(我也尝试在下拉列表中提供相同结果的值)。

Where smpl_lvl_cd in (@SampleLevel)

我认为这很简单,当用户选择一个值时,一切正常。一旦您选择了多个值,您就会收到错误“在预期条件的上下文中指定的非布尔类型的表达式,靠近 ','。”

例如:选择样本级别“Q”和“V”。据我了解,SSRS 向查询发送“Q,V”。 (或者它发送“Q,V,'?)考虑到这一点,我尝试使用:

Where smpl_lvl_cd in (select value from string_split(@SampeLevel, ','))

类似的结果“过程或函数 string_split 指定了太多参数.....”后跟相同的布尔消息。

此参数未发送到存储过程,但我已尝试将参数上的 join 函数与查询中的 string_split 结合使用。我最终没有获得超过一个选择的数据。

请帮忙。

【问题讨论】:

  • 用户如何手动输入参数值?如果他们要添加逗号,那就是问题所在,您只需要输入值并在值之间按回车键,它们就会出现在不同的行中

标签: reporting-services multi-select


【解决方案1】:

见这篇文章:SSRS multi-value parameter using a stored procedure。在发送到数据集之前,您必须将多值参数数组更改为字符串。因此发送表达式=Join(SampeLevel!Value,",") 而不是[@SampeLevel]

【讨论】:

    猜你喜欢
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多