【问题标题】:SSRS "OR" Filter Logic to filter from "=" and "IN" OperatorsSSRS“OR”过滤逻辑从“=”和“IN”运算符中过滤
【发布时间】:2018-10-04 18:58:31
【问题描述】:

我正在编写一份报告,它需要从两个内置字段中的任何一个中过滤数据。所以我使用“FilterExpression”来根据下面的文章查询我的要求,即Reporting Services (SSRS) OR Filter Logic。这篇文章足以对大多数情况进行操作。但我正在尝试使用“=”和“IN”运算符进行过滤。

从文章中提到的示例中,如果我想从州列表或特定国家/地区过滤数据,例如,我想从州(华盛顿、明尼苏达、田纳西、俄勒冈)或国家(美国)中过滤,该怎么办? .我知道有人可能会建议只使用国家/地区字段,但我的应用程序与示例略有不同,它应该根据两列值中的任何一个过滤数据。所以我在一个全新的“filterexpression”中尝试了类似下面的内容并删除了各个过滤器:

=(Fields!Country.Value = "United States") Orelse (Fields!State.Value IN SPLIT("Washington,Minnesota,Tennessee, Oregon",",")). 

但似乎代码中没有“IN”,因为窗口在其下方显示了一条红线,所以我需要找到一个替代方案(尚未弄清楚)。后来,我尝试按照文章中的行将Value设置为True(在函数日志到表达式旁边)并且表达式类型的数据类型为Boolean,但出现错误(我不知道如何它确实有效)。

【问题讨论】:

  • 什么版本的VS或reportbuilder,你用的是什么版本的SSRS?
  • VS 2012 @AlanSchofield

标签: sql-server vb.net reporting-services


【解决方案1】:

我会使用 InStr 函数来搜索列表中的 State 字段。

你的表达应该是这样的:

=IIF(Fields!Country.Value = "United States" Orelse InStr("Washington,Minnesota,Tennessee, Oregon", Fields!State.Value) > 0, 1, 0)

我通常使用 1 和 0 作为过滤器值 - SSRS 在将它们作为布尔值进行比较时,并不总是喜欢从像 1 = 1 这样的表达式返回的 TRUE FALSE。

Microsoft: Instr-function

【讨论】:

    【解决方案2】:

    我最近遇到了同样的需求,需要使用 IN operatorEQUALS (=) operator 执行 DATASET FILTER with OR criteria

    [汉诺威拳头]的答案包括带有 INSTR() 函数的表达式代码。在我的场景中,我必须过滤 Number Datatype 值。请注意开发人员... INSTR() 表达式仅对 TEXT 数据类型值是可靠的。请参阅下面提供的屏幕截图。

    我不知道为什么 Microsoft 不只是提供将假定的 [AND] 标准 更改为可配置的 [AND /OR] 标准 由报告开发人员选择。配置过滤条件将比 BOOLEAN FILTER EXPRESSION 变通选项简单得多。


    SSRS-DatasetFilter_(OR Condition-IN Filter).png

    【讨论】:

    • 顺便说一句...我也遇到了 OP (denglishbi.wordpress.com/2011/01/28/…) 发布的同一篇文章。我真的希望这篇文章会带来比我在答案中发布的更清洁的解决方案。不幸的是,没有更好的答案...在这个线程中回答了相同的 OR EXPRESSION 解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多