VBA访问-FindFirst空值

VBA访问-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

我试图在下面的代码中查找第一个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.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的,并且会根据您对记录集的排序方式而变化。我认为最好返回主键值,因为它是该记录的唯一值&不会改变。啊,谢谢!真不敢相信我这么做了,然后把它贴了出来。我所有的其他发现都有别的。我要怪你太累了。