首页 > 解决方案 > SSRS“OR”过滤逻辑从“=”和“IN”运算符中过滤

问题描述

我正在编写一份报告,它需要从两个内置字段中的任何一个中过滤数据。所以我使用“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,但出现错误(我不知道如何真的行)。

标签: sql-servervb.netreporting-services

解决方案


我会使用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。

微软:Instr-function


推荐阅读