VBA访问-FindFirst空值
我试图在下面的代码中查找第一个null值。我可以只使用select中的where,但它会删除非空值。我想保留整个记录集,以便使用rs.AbsolutePosition向用户报告哪一行为空。我基本上是将它设置为将用户在temp表中输入的信息与另一个表进行比较。如果匹配字符串在其中,则会出现,否则记录集上应为nullVBA访问-FindFirst空值,vba,ms-access,Vba,Ms Access,我试图在下面的代码中查找第一个null值。我可以只使用select中的where,但它会删除非空值。我想保留整个记录集,以便使用rs.AbsolutePosition向用户报告哪一行为空。我基本上是将它设置为将用户在temp表中输入的信息与另一个表进行比较。如果匹配字符串在其中,则会出现,否则记录集上应为null strSQL = "SELECT Tbl_Temp.ID, Tbl_List.String FROM Tbl_Temp LEFT JOIN Tbl_List ON Tbl_Temp.s
strSQL = "SELECT Tbl_Temp.ID, Tbl_List.String FROM Tbl_Temp LEFT JOIN Tbl_List ON Tbl_Temp.string = Tbl_List.string"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
strIsN = "IsNull(string)"
rs.FindFirst strIsN
If rs.NoMatch Then
MsgBox "no null values"
Do While Not rs.NoMatch
MsgBox "Found null" & rs.AbsolutePosition
rs.FindNext strIsN
Loop
rs.FindNext strIsN
End If
现在它基本上什么都不做。甚至不会触发错误或不匹配。我做错了什么?你的代码缩进已经关闭,欺骗了你和我 这就是您想要的-您缺少了
其他
RS.FindFirst strIsN
If RS.NoMatch Then
MsgBox "no null values"
Else
Do While Not RS.NoMatch
Debug.Print "Found null " & RS.AbsolutePosition
RS.FindNext strIsN
Loop
End If
请阅读,单步执行代码会立即发现问题
“IsNull(string)”
和“[string]为Null”
都可以工作,但是“[string]为Null”
可能会执行得更好。试试strIsN=“[string]为Null”
不工作,甚至不会触发不匹配。当我用该SQL创建一个select查询时,有3个结果,2个结果为null。我还尝试将IsNull(string)=“True”作为字符串,这会导致不匹配,但仍然不起作用。请记住绝对位置是基于0的,并且会根据您对记录集的排序方式而变化。我认为最好返回主键值,因为它是该记录的唯一值&不会改变。啊,谢谢!真不敢相信我这么做了,然后把它贴了出来。我所有的其他发现都有别的。我要怪你太累了。