IsNull 总是 returns 假
IsNull always returns false
我使用 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
此代码总是 returns "Not null!"。如果我反转它并使用 :
If not IsNull(Me.M_RN) Then
MsgBox "Not null!"
Else
MsgBox "null!"
End If
每次还是returns"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
错误。
我认为您的这部分信息很重要;
the non-working variable is in int format and has a unique index.
如果它有唯一索引,那么我敢肯定您无论如何都无法分配空值。您是否在 table 中设置了默认值?
问题是基于 SQL 后端 table 上的 not null
设置。在 BeforeUpdate
事件之前,Access 正在检查它从该限制派生的验证规则 。
然后弹出 You tried to assign the Null value to a variable that is not a Variant data type
错误,这显然阻止了 BeforeUpdate
事件的触发。
删除 not null
限制允许代码运行,同时保留唯一索引。
使用 Form_Error
无法绕过它,即使 Response
设置为 acDataErrContinue
。在那种情况下,它会弹出一个关于验证规则的实际运行时错误,阻止更改试图将字段设置回 .OldValue
.
的行上的值
我使用 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
此代码总是 returns "Not null!"。如果我反转它并使用 :
If not IsNull(Me.M_RN) Then
MsgBox "Not null!"
Else
MsgBox "null!"
End If
每次还是returns"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
错误。
我认为您的这部分信息很重要;
the non-working variable is in int format and has a unique index.
如果它有唯一索引,那么我敢肯定您无论如何都无法分配空值。您是否在 table 中设置了默认值?
问题是基于 SQL 后端 table 上的 not null
设置。在 BeforeUpdate
事件之前,Access 正在检查它从该限制派生的验证规则 。
然后弹出 You tried to assign the Null value to a variable that is not a Variant data type
错误,这显然阻止了 BeforeUpdate
事件的触发。
删除 not null
限制允许代码运行,同时保留唯一索引。
使用 Form_Error
无法绕过它,即使 Response
设置为 acDataErrContinue
。在那种情况下,它会弹出一个关于验证规则的实际运行时错误,阻止更改试图将字段设置回 .OldValue
.