嵌入 如果 否则行为与 iif 不同



我的嵌入式代码中有这个函数

Function IsNull(ByVal Input As Double, ByVal D As Double) As Double
If IsNothing(Input) Then
Return D
Else
Return Input
End If
End Function

我用它来替换这样的表达式

Iif(IsNothing(Fields!Amount.Value), 1, Fields!Amount.Value)

我以为他们会做同样的事情,但他们没有。当我把这个表达式放在我的报告中时

=Code.IsNull(Fields!Amount.Value, 1) = Iif(IsNothing(Fields!Amount.Value), 1, Fields!Weight.Value)

Fields!Amount.ValueNULL时,我得到"假"。

我的猜测是,当我将NULL传递给Input时,发生了一些不稳定的事情,该被键入为Double.但我对VB的了解还不够多,无法知道到底发生了什么。

尝试以下操作:

Function IsNull(ByVal Input As Object, ByVal D As Double) As Double
If IsNothing(Input) Then
Return D
Else
Return CDbl(Input)
End If
End Function

或:

Function IsNull(ByVal Input As Double?, ByVal D As Double) As Double
If Not Input.HasValue Then
Return D
Else
Return Input.Value
End If
End Function

相关内容

  • 没有找到相关文章

最新更新