如何解决无论 IIF 语句如何,SQL 表都会显示
目前我有一份包含 3 个表格的 SSRS 报告。
我已经定义了 3 个参数值:
- 表 A = 1
- 表 B = 2
- 表 C = 3
我还创建了 3 个表:
- 表A
- 表 B
- 表 C
我还创建了以下 iif 语句
- =IIF(Parameters!Transaction.Value(0)=1,true,false)
- =IIF(Parameters!Transaction.Value(0)=2,false)
- =IIF(Parameters!Transaction.Value(0)=3,false)
我的系统没有出错,但这个查询不起作用 - 无论选择什么参数,它仍然显示所有 3 个表。
我在这里做错了什么?
解决方法
您的问题中遗漏了很多细节,但我会猜测..
- “我创建了 3 个表”表示您在报表上创建了 3 个表 (tablix) 控件,而不是您创建了 3 个数据库表。
- 您想根据参数选择显示/隐藏这些表格
- 您的参数是多值的
- 您显示的 IIF 语句位于每个表的
hidden
属性中。
如果有任何错误,请更新您的问题以澄清。
您的表达式的问题在于它们只检查第一个选定的参数值(因为您正在引用索引 (0)
),因此所有三个的结果每次都相同。
要解决这个问题,您可以执行以下操作...
=("|" & JOIN(Parameters!Transaction.Value,"|") & "|").Contains("|1|") =False
对其他两个用 "|1|"
或 "|2|"
替换 "|3|"
的表重复此操作。
所有这一切都是 JOIN()
由管道 |
符号分隔的所有选定参数值,这将给我们类似
1|2|3 or 1|2 for exmaple
接下来我们在开始和结束添加一个管道给我们
|1|2|3| or |1|2| for exmaple
如果您的参数值为 10 或更多并且检查“1”是否存在,即使未选择 1 但选择了 10,这也将确保使用安全。
最后,我们检查连接的值是否包含字符串 |1|
、|2|
等,并将结果与 false 进行比较。这样我们就不需要使用 IIF 语句
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。