我正在将 SSRS 2005 BIDS 项目迁移到 Visual Studio 2015 数据工具,并且我看到迁移使用 IN 运算符的 DataSet 过滤器时出现问题。报告似乎工作正常,但是当我在设计器中查看过滤器表达式时,只出现列表中的第一个操作数,其余的都丢失了。但是,如果我查看代码(.rdl 源代码),我会看到所有操作数。更糟糕的是,如果我使用 OK 按钮关闭 Filters 窗口,则只保留第一个操作数,其余操作数将从 .rdl 文件中删除。
这是 .rdl 代码中的示例过滤器:
<Filter>
<FilterExpression>=Fields!DecodeType.Value</FilterExpression>
<Operator>In</Operator>
<FilterValues>
<FilterValue>="Team"</FilterValue>
<FilterValue>="ALL"</FilterValue>
</FilterValues>
</Filter>
过滤器运算符和过滤器值的 .rdl 代码在 2005 和 2015 工具中是相同的。问题似乎与 2015 年(或 2008 年)设计师有关。
问题:
我做错了什么,还是这是一个已知问题?
我应该改用什么语法。Split("Team,ALL",",") 有效,但我的一些过滤器在可能值列表中检查 Nothing(请参阅下面的 .rdl 过滤器值)
<Filter>
<FilterExpression>=Fields!DecodeType.Value</FilterExpression>
<Operator>In</Operator>
<FilterValues>
<FilterValue>=2</FilterValue>
<FilterValue>=Nothing</FilterValue>
</FilterValues>
</Filter>
注意:从 2005 BIDS 迁移到 2008 BIDS 时也会出现同样的问题。我通过尝试通过每个版本进行渐进式迁移发现了这一点:(