【发布时间】:2017-07-29 17:35:22
【问题描述】:
我使用 MS Access 作为 SQL Server 2012 的前端,在将更新传递给服务器之前测试字段中的空值,并向用户显示有用的消息。
在BeforeUpdate 事件中使用If IsNull 以及一些花哨的重复检查,我让它在一个字段中运行良好。但是,当为另一个变量实现相同的代码时,IsNull 的计算结果始终为 false。
我尝试删除所有有用的代码,只使用带有消息框的IsNull:
If IsNull(Me.M_RN) Then
MsgBox "null!"
Else
MsgBox "Not null!"
End If
此代码始终返回“Not null!”。如果我反转它并使用:
If not IsNull(Me.M_RN) Then
MsgBox "Not null!"
Else
MsgBox "null!"
End If
它仍然返回“Not null!”每次。我还尝试了其他事件状态,例如Change、KeyUp 和 Dirty。无论事件如何,IsNull 都会返回 false。
这些字段的表单对象具有相同的属性。我能看到的唯一区别是工作变量采用numeric(18,0) 格式且未编入索引,而非工作变量采用int 格式并具有唯一索引。
如果我删除所有代码,我会在更新时收到 You tried to assign the Null value to a variable that is not a Variant data type 错误。
【问题讨论】:
-
错误出现在哪一行?
-
@Nick.McDermaid 我不确定你的意思;这不是编译错误,所以它没有显示它搞砸了哪一行。
-
@McNets 这不是有效的 vba,不会做任何事情
-
是的,对不起,我看错了。
-
你试过 IsEmpty() 吗?
标签: sql-server vba ms-access sql-server-2012 ms-access-2010