具有多个 IIf 表达式的 SSRS 报表生成器,如何读取代码



我有一个旧报告,其中有一列的表达式如下所示:

=IIf(Sum(Fields!projqty.Value)<>0, IIf(Max(Fields!projekttargettime.Value)=1, (Sum(Fields!projtime.Value+Fields!acwtime.Value)), (Sum(Fields!projqty.Value)*Fields!targettime.Value)), (Sum(Fields!projqty.Value)*Fields!targettime.Value))

我不明白如何阅读代码,想知道是否有人可以解释它?

称为内联 if 或 iif()

内联 if 基本上是这样的: iif(<test condition>, <value for true>, <value for false>)

对于您的示例,您还嵌套了 iif() 语句来解决问题。它去..

IIf(Sum(Fields!projqty.Value)<>0 - 检查此sum(Fields!projqty.Value)是否不等于 0

IIf(Max(Fields!projekttargettime.Value)=1 - 第一个测试为真(不等于 0(,所以现在我们要检查这个max(Fields!projekttargettime.Value)是否等于 1

(Sum(Fields!projtime.Value+Fields!acwtime.Value)), - 我们之所以来到这里,是因为sum(Fields!projqty.Value)不等于 0,max(Fields!projekttargettime.Value)等于 1

(Sum(Fields!projqty.Value)*Fields!targettime.Value)), - 我们之所以来到这里,是因为sum(Fields!projqty.Value)不等于 0,max(Fields!projekttargettime.Value)不等于 1

(Sum(Fields!projqty.Value)*Fields!targettime.Value)) - 最后,我们到达这里,因为原始sum(Fields!projqty.Value)等于 0。我们从不检查max(Fields!projekttargettime.Value),因为我们没有到达iif()的那部分

有关 SSRS 中的表达式的详细信息,请参阅此处。

最新更新