我的嵌入式代码中有这个函数
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的了解还不够多,无法知道到底发生了什么。
尝试以下操作:
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