使用非VBA运算符
我有一个我认为很简单的问题。如果我没有正确地使用使用非VBA运算符,vba,boolean,Vba,Boolean,我有一个我认为很简单的问题。如果我没有正确地使用或缺少其他内容,则不会。如果我的记录集: 有两个字段 ADO记录集中至少有一个字段具有非空值 值(如果两个字段的IsNull均为真,则执行Elseblock) 否则,我需要执行Else块 If rSetFlag.Fields.Count = 2 And _ Not (IsNull(rSetFlag.Fields(0)) And IsNull(rSetFlag.Fields(1))) Then QueryFlag
或缺少其他内容,则不会。如果我的记录集:
有两个字段
ADO记录集中至少有一个字段具有非空值
值(如果两个字段的IsNull
均为真,则执行Else
block)
否则,我需要执行Else
块
If rSetFlag.Fields.Count = 2 And _
Not (IsNull(rSetFlag.Fields(0)) And IsNull(rSetFlag.Fields(1))) Then
QueryFlags = rSetFlag.Fields(0) & "|" & rSetFlag.Fields(1)
Else
QueryFlags = rSetFlag.Fields(0)
End If
我没有得到正确的运算符优先级吗?我尝试了其他几种方法,包括或在IsNull
语句中Debug.Print
返回以下内容(不需要前两项):
那么让我们简单一点。。。。使用以下方法:如果仍然失败,请放置断点并检查值
If rSetFlag.Fields.Count = 2 Then
If IsNull(rSetFlag.Fields(0)) And IsNull(rSetFlag.Fields(1)) Then
QueryFlags = rSetFlag.Fields(0)
Else
QueryFlags = rSetFlag.Fields(0) & "|" & rSetFlag.Fields(1)
End If
Else
QueryFlags = rSetFlag.Fields(0)
End If
试试这个:
If (rSetFlag.Fields.Count = 2) And ((Not IsNull(rSetFlag.Fields(0))) Or (Not IsNull(rSetFlag.Fields(1)))) Then
QueryFlags = rSetFlag.Fields(0) & "|" & rSetFlag.Fields(1)
Else
QueryFlags = rSetFlag.Fields(0)
End If
当rSetFlag.Fields.Count=2且不为(IsNull(rSetFlag.Fields(0))和IsNull(rSetFlag.Fields(1))时,
是否为真?如果rSetFlag.Fields.Count=2
和IsNull(rSetFlag.Fields(0))和IsNull(rSetFlag.Fields(1))
为FALSE。当两者都不为null时,第二个为false。如果要在其中一个字段至少为非空时执行,则必须使用Not(IsNull(rSetFlag.Fields(0)))或Not(IsNull(rSetFlag.Fields(1))
而不是Not(IsNull(rSetFlag.Fields(0))和IsNull(rSetFlag.Fields(1))
此处的&
符号错误。
也许 吧:
尝试使用rSetFlag.Fields(1.value)检查
也许 吧:
前两个条目在这里,因为字段中的值不是NULL
,而是”
的空字符串。
如果没有值,可以使用Len(Nz(rSetFlag.Fields(1).value,vbNullString))=0检查它。
可能的解决办法:
If rSetFlag.Fields.Count = 2 And _
Not (Len(Nz(rSetFlag.Fields(0).value, vbNullString)) = 0 _
And _
Len(Nz(rSetFlag.Fields(1).value, vbNullString)) = 0) Then
QueryFlags = rSetFlag.Fields(0) & "|" & rSetFlag.Fields(1)
Else
QueryFlags = rSetFlag.Fields(0)
End If
我尝试了这个,但它仍然返回|
,两边都没有数据。我更改了答案以简化逻辑。如果仍然失败,请设置断点。您是否有“Option Explicit”并编译了所有代码?这也会返回|
。这不起作用,我需要对这两个字段进行相等的计算。在上面的Debug.Print
image中,Poufs和附件|
和| Exclude
足以执行if
块。感谢您为我指明了正确的方向。我忘了提到我在Excel中使用VBA。新西兰在Access图书馆。现在解决了吗?通过使用len(IIF(IsNull(rSetFlag.Fields(0)),“”,rSetFlag.Fields(0))=0
?或者其他方式?是的,谢谢你的帮助!虽然我会说我的ADO查询返回空格和null on和off。