我的嵌入式代码中有这个功能
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.Value
为NULL
时,我收到“假”。
我的猜测是,当我将NULL
传递给Input
并输入Double
时,会发生一些不稳定的事情。但我不太了解VB知道实际发生了什么。
答案 0 :(得分:0)
尝试以下方法:
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