如何停止评估第一个condion是否已通过

时间:2012-09-12 12:39:44

标签: asp.net reporting-services reportviewer rdlc

我尝试评估报告中的字段,但每次都失败:

= IIf(Fields!lectcrs_hrs.IsMissing,
      Round(Fields!lectcrs_fee.Value * "1.00", 2),
      Round(Fields!lectcrs_fee.Value * Fields!lectcrs_hrs.Value, 2))

Fields!lectcrs_hrs.IsMissing = true的情况下,我的字段为空,我发现第二种情况Round(Fields!lectcrs_fee.Value * Fields!lectcrs_hrs.Value, 2)包含缺失字段Fields!lectcrs_hrs的原因。为什么它检查第二种情况是否通过第一个!

如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

您正在寻找的行为称为“短路”,不幸的是,Visual Basic中的IIf函数不提供此功能。原因是IIf()是三元函数,因此,传递给它的所有参数都会在函数调用发生之前进行评估。另一方面,三元运算符(VB 9+中的If())确实支持条件评估。但是,我不相信If()运算符可以用作SSRS中表达式的一部分。

鉴于您尝试使用运行时可能存在或可能不存在的字段,我建议您在报表中创建自定义函数以处理正确的检查和返回值。作为参考,请查看this blog post,其中包含相同的方案。