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

时间:2019-02-08 09:17:53

标签: vb.net reporting-services

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

=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))

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

1 个答案:

答案 0 :(得分:1)

这称为内联if或iif()

内联,如果基本上遵循以下原则: 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-第一个测试为true(不等于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),因为我们没有到达{{1 }}

有关SSRS中表达式的更多信息,请参见here