任何人都可以建议在表过滤器中使用 IN 运算符时的语法应该是什么。我尝试了以下方法,但语法错误:
17 回答
我也遇到了一些麻烦。Microsoft自己的文档指出,值框中的简单逗号分隔值列表应该可以工作。这令人困惑,因为它没有。至少它不适合我,我正在使用 SSRS 2012 和 Visual Studio 2010。
事实证明,当您使用 IN 运算符时,SSRS 需要一个值数组。有很多方法可以使这个过滤器工作。以下示例旨在在表达式编辑器中输入。
第一种方法(也是下面链接的博客中解释的方法)是简单地在字符串值中键入逗号分隔的列表,然后在其上使用 split 函数。
=split("2B,2C",",")
或者,您可以从多值参数派生列表。多值参数已经是一个数组,因此您所要做的就是通过参数表达式引用它,如下所示。
=Parameters!MultiValueParam.Value
我通过以下博客找到了这些信息。http://sqlblogcasts.com/blogs/simons/archive/2007/11/20/RS-Howto--Use-the-IN-operator-in-a-filter-expression.aspx
这实际上有效:
=CStr("Value1,Value2,Value3,Value4,etc").Split(",")
这在 SSRS 2012 中进行了测试。
如果您只是更改Value属性并添加一个逗号分隔的应该起作用的值列表:
无论如何,这在快速测试中对我有用。
Books Online 的示例似乎很简单,但我确实找到了一个参考;请参阅常用过滤器In
中的示例。如果能更好地解释这一点,那就太好了。
"value1" "value2"
一个空格,没有逗号对我有用。好笑的是,回去看测试的时候,显示为
value1, value2
带逗号,不带引号。如果我将其剪切,然后将其直接粘贴回同一字段,则不起作用。这是一些错误的狗屎就在这里。
基础数据类型是 nvarchar(10),而不是 null
经 VS 2017 和 SSRS 2016 测试
If the recommended solution somehow doesn't work for you, try using a semicon as a seperator.
Example: criteria one; criteria two
It worked for me.
从表达式中删除前导=
,即
"criteria one" , "criteria two"
这在 SSRS 2012 中对我有用。
“标准一”、“标准二”
对于整数值,您可以使用:
类型:文本
运营商:在
值:=新整数(){8800,8820}
应该适用于 2008 R2 和更新版本
OMG 这么多答案......
我知道这有效:
1) MY SP returns VARCHAR(n) for the field I will filter in the tablix. Returning INT DOES NOT WORK in my solution. I don't know why (yet).
2) report.param.allow multiple values = true
3) tablix.filter.expression.datatype = text
4) tablix.filter.operator = IN
5) tablix.filter.value = =SPLIT(JOIN(Parameters!id.Value,","),",")
使用这种方法,我能够调用 SP 一次,在参数中使用它来获取可用值,运行报告,并且 tablix 表从上面的步骤 #5 读取选定的数据并显示正确的行数。
对于整数值,这对我有用:
- 表达式:MyNumber
- 运营商:在
- 值:10;12; 124
见图片链接:
经过多次尝试,我的问题终于解决了,只使用了这种方法。
表达:
=InStrRev(带分隔符的完整字符串,要搜索的值)
类型:整数
操作员: <>
值: 0
通用解决方案:
表达式:[列名]
运营商:在
值:[@ parameterName ]
将此查询输入到表达式中:
=Join(Parameters!MultiValueParam.Value)
可能我使用的是最新版本的 SSRS。值类型是text。对我来说,
"criteria 1";"criteria 2";...;"criteria N"
双引号是强制性的。
在 Visual Studio 2013 Premium 中,IN 运算符可以很好地处理多值参数:
=Parameters!MultiValueParam.Value
但是,当我想在我的集合中使用常量值时,我无法让 IN 运算符通过 UI 输入文本或表达式。
最终使用一组常量值的方法是进入代码视图并手动编辑我的过滤器。一组常量字符串“E”、“G”和“H”所需的 XML 如下:
<Filters>
<Filter>
<FilterExpression>=Fields!det.Value</FilterExpression>
<Operator>In</Operator>
<FilterValues>
<FilterValue>E</FilterValue>
<FilterValue>G</FilterValue>
<FilterValue>H</FilterValue>
</FilterValues>
</Filter>
</Filters>
我的价值观包括正斜杠。我能让 SSRS 的In ▼操作员正确处理它们的唯一方法是使用表达式=
CStr("google / cpc,bing / cpc").Split(",")
每个数值之间的每个间隔都需要一个空格。它工作正常