0

目前我有一个包含 3 个表的 SSRS 报告。

我已经定义了 3 个参数值,如下所示:

  • 表 A = 1
  • 表 B = 2
  • 表 C = 3

我还创建了 3 个表:

  • 表 A
  • 表 B
  • 表 C

我还创建了以下 iif 语句

  • =IIF(参数!Transaction.Value(0)=1,真,假)
  • =IIF(参数!Transaction.Value(0)=2,真,假)
  • =IIF(参数!Transaction.Value(0)=3,真,假)

我的系统没有出错,但这个查询不起作用——无论选择什么参数,它仍然显示所有 3 个表。

我在这里做错了什么?

4

1 回答 1

0

您的问题缺少很多细节,但我猜..

  1. “我创建了 3 个表”意味着您在报表上创建了 3 个表(tablix)控件,而不是您创建了 3 个数据库表。
  2. 您想根据参数选择显示/隐藏这些表格
  3. 您的参数是多值的
  4. 您显示的 IIF 语句位于hidden每个表的属性中。

如果有任何错误,请更新您的问题以澄清。

您的表达式的问题是它们只检查第一个选定的参数值(当您引用 index(0)时),因此每次所有三个的结果都是相同的。

为了解决这个问题,您可以执行以下操作...

=("|" & JOIN(Parameters!Transaction.Value,"|") & "|").Contains("|1|") =False

对其他两个表重复此操作,替换"|1|""|2|"or "|3|"

所有这JOIN()一切都是由管道符号分隔的所有选定参数值,|这将给我们类似的东西

1|2|3  or 1|2 for exmaple

接下来我们在开始和结束处添加一个管道给我们

|1|2|3|  or |1|2| for exmaple

如果您的参数值大于或等于 10 并且检查是否存在“1”,这使得 if 可以安全使用,即使未选择 1 而选择了 10,也会返回 true。

最后,我们检查连接的值是否包含字符串|1||2|,并将结果与​​ false 进行比较。这样我们就不需要使用 IIF 语句

于 2021-02-12T10:45:23.347 回答