2012-09-12 31 views
0

我尝试在我的报告来评估一个字段,但它失败每次:如何停止评估,如果第一condion已经通过

= 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的原因,为什么它检查第二个案例是否通过了第一个案例!

如何解决这个问题?

回答

3

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

鉴于您试图在运行时使用可能存在或不存在的字段,我建议您在报告中创建自定义函数以处理正确的检查和返回值。作为参考,请看this blog post,它涵盖了相同的情况。

相关问题