在Access VBA中处理NULL = NULL比较
我有NULL = NULL
返回NULL
的问题。我希望它返回True
。一些研究之后,我发现,我以为会工作线..在Access VBA中处理NULL = NULL比较
set ansi_nulls off
我很快就发现,Access不能识别它。所以在这里我试图在Access中做嵌套条件,这是一个完整的噩梦。
有没有更简单的方法来处理这个问题?
如果你正在做大量的“等于或两个空”的比较,有多种解决方案:
-
如果比较数字的时候是用
0 = Null
导致真OK,或"" = Null
比较字符串时导致为true,则可以使用:If Nz(Value1) = Nz(Value2) Then
这将替换所有空值与0
或""
依赖在输入类型上。
后果:Nz(Null) = Nz(Null)
→True
,0 = Nz(Null)
→True
,"" = Nz(Null)
→True
,1 = Nz(Null)
→False
,"a" = Nz(Null)
→False
- 创建用户定义函数来为你做的比较
功能:
Public Function CompareWithNulls(Value1 As Variant, Value2 As Variant) As Boolean
If IsNull(Value1) And IsNull(Value2) Then
CompareWithNulls = True
Else
CompareWithNulls = Value1 = Value2
End If
End Function
使用该功能:
If CompareWithNulls(Value1, Value2) Then
我不知道你可以使用'如果Nz(Value1)= Nz(Value2)然后',但它的工作完美。谢谢! – Steven
可以使用And
关键字测试多个条件而不嵌套:
If IsNull(Value1) And IsNull(Value2) Then
您可以创建一个到两个变量与空校验比较方法,然后将每个如果只需要改为调用的这个函数通常=
你可以发布你挣扎条件的例子吗?我无法想象如何为NULL添加一个检查会使一个更复杂 – Milk