比较object.Value = Null不会产生预期的结果

use*_*975 7 ms-access vba

所以我有一个令人沮丧的简单问题,我似乎无法解决.

If Me.Bank_Credit.Value = Null Then
Me.Bank_Credit.Value = 0
End If
Run Code Online (Sandbox Code Playgroud)

基本上,我有一个未绑定的框,用户输入数据然后点击按钮.确认框上的"是"后,未绑定框上的数据将复制到绑定框中.但是,如果用户没有输入任何内容,那么反过来会创建一个空的绑定字段,这会严重搞砸了路上的查询.

话虽这么说,上面的代码根本不适用于我.例如,如果我设置了如果Me.Bank_Credit.Value = 1然后运行它,则1s变为2s,应该发生.但它只是拒绝为Null甚至""工作.

我很确定这个问题有一个简单的解决方案,我只是想不出来.

提前致谢

Han*_*sUp 17

什么都不等于Null,甚至不是Null.没有什么不等于Null,甚至不是Null.

如果Bank_Credit Null,则以下表达式将返回Null ...不是True您所期望的,甚至是False.

Debug.Print (Me.Bank_Credit.Value = Null)
Run Code Online (Sandbox Code Playgroud)

这与立即窗口中此结果的原因相同:

Debug.Print Null = Null
Null
Run Code Online (Sandbox Code Playgroud)

使用该IsNull()功能.

If IsNull(Me.Bank_Credit.Value) Then
Run Code Online (Sandbox Code Playgroud)

另外,请查看Nz()帮助主题以了解它是否有用.你可以做到这一点,虽然它并没有真正改善IsNull().但Nz()对于其他VBA代码可以非常方便.

Me.Bank_Credit = Nz(Me.Bank_Credit, 0)
Run Code Online (Sandbox Code Playgroud)

  • 当涉及Null时,'='不能用作比较器(如果x = Null),但仍可用作赋值指令(x = Null). (4认同)