使用IN运算符过滤报告服务

Jso*_*ham 33 sql-server-2008 reporting-services ssrs-2008

任何人都可以建议在表过滤器中使用IN运算符时应该是什么语法.我尝试过以下但是snytax错了:

在此输入图像描述

小智 38

我也遇到了一些麻烦.微软自己的文档说明值框中的一个简单的逗号分隔值列表应该有效.这很令人困惑,因为它没有.至少它不适合我,我正在使用SSRS 2012和Visual Studio 2010.

事实证明,当您使用IN运算符时,SSRS期望一组值.有许多方法可以使这个过滤器工作.以下示例旨在在表达式编辑器中键入.

第一种方式(也是下面链接的博客中解释的方式)是在字符串值中键入逗号分隔列表,然后在其上使用split函数.

=split("2B,2C",",")
Run Code Online (Sandbox Code Playgroud)

或者,您可以从多值参数派生列表.多值参数已经是一个数组,所以你要做的就是通过参数表达式引用它,如下所示.

=Parameters!MultiValueParam.Value
Run Code Online (Sandbox Code Playgroud)

我通过以下博客发现了这些信息.http://sqlblogcasts.com/blogs/simons/archive/2007/11/20/RS-Howto--Use-the-IN-operator-in-a-filter-expression.aspx

  • 拆分功能适用于 VS 2013 和 SSRS 2012。微软方面的文档很差。它只是不像宣传的那样工作。感谢@Jordan H 和 obp (2认同)

Ian*_*ton 16

如果您只是更改Value属性,只需添加一个逗号分隔的值列表,它应该起作用:

在此输入图像描述

无论如何,这对我来说是一个快速测试.

在线书籍似乎对示例非常清楚,但我确实找到了一个参考; 请参阅Commmonly Used Filters中In示例.如果更好地解释这将是很好的.

  • 如果这不起作用,我还建议将您的值放在引号中,例如"条件一","标准二" (3认同)
  • 这在 Visual Studio 2017 中对我不起作用。设计者一直想在每个值之前和之后添加 ""(双双引号)。给定上面的例子,它在返回并编辑后显示为 """criteria one""", """criteria two"""。 (3认同)

小智 15

这实际上有效:

=CStr("Value1,Value2,Value3,Value4,etc").Split(",")
Run Code Online (Sandbox Code Playgroud)

这在SSRS 2012中进行了测试.

  • 这是唯一对我有用的解决方案,因为如果表达式不以 `=` 开头,编辑器总是用 `""` 包围整个表达式。我使用的是报表生成器 3.0。 (2认同)

小智 8

"value1" "value2"
Run Code Online (Sandbox Code Playgroud)

有一个空格并且没有逗号对我有用。有趣的是,当测试结束后回头查看时,它显示为

value1, value2
Run Code Online (Sandbox Code Playgroud)

带逗号且不带引号。如果我剪切它,然后将其直接粘贴回同一字段,则不起作用。这是一些有问题的东西。

基础数据类型是 nvarchar(10),不为 null

使用 VS 2017 和 SSRS 2016 进行测试