0

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

= 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如果它通过第一个案例,它会检查第二个案例!

如何解决这个问题?

4

1 回答 1

3

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

鉴于您尝试使用在运行时可能存在或不存在的字段,我建议您在报告中创建一个自定义函数来处理正确的检查和返回值。作为参考,请查看这篇博客文章,其中涵盖了相同的场景。

于 2012-09-12T14:06:02.600 回答