我有一个报告,我想根据字段值排除大多数行。那部分并不难。我过滤掉的值是“OK”。所以最后报告只显示包含警告的行。通常只有 50-60 行中的一到两行。
我一直在使用表达式:
=IIF(Fields!ALERT_VALUE.Value = "OK", True, False) for the row.
现在我们进入棘手的部分。如果没有警告,那么我只会得到一个空报告。我想要做的是显示一条消息,表明没有警告。
因此,我创建了一个新行并在第一列中设置了这个表达式:
=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,"No Commitment Warnings", nothing)
并将可见性设置为:
=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,False,True)
但我什么也得不到。
我想我在某处读到我只是隐藏行而不是从报告中删除它们,所以我猜我的消息行仍然看到隐藏的行,这就是它不起作用的原因。
但我发誓我今天早上已经成功了,哈哈!
那么,有没有办法得到我想要做的事情?隐藏所有无警告行,如果没有警告行,显示消息?
我对您的逻辑有些困惑,因为
=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,False,True)
如果计数为 0,可见性表达式将隐藏该行,这与您尝试=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,"No Commitment Warnings", nothing)
根据您所说的内容实现的逻辑相反。如果是这样,那么您可能需要做的就是像这样在可见性表达式中翻转False
和左右。True
=IIF(Count(Fields!ALERT_VALUE.Value,"DataSet1")=0,True,False)
作为参考,SSRS 的函数是从VBA派生的,所以你可以在
IIF
这里找到关于函数的文档。好的,所以看起来技巧是获取 Status = "OK" 的行的行数,并将其与所有行的计数进行比较。如果它们相等,则没有警告消息,我们会显示消息行。
如果它们不相等,则会出现警告并且我们不会显示消息行。
做这一切的诀窍是对状态为 OK 的行求和,如下所示:
感谢我的朋友查尔斯为我指明了正确的方向。