VBA访问 - FindFirst Null值

时间:2017-07-20 12:32:51

标签: vba ms-access

我正在尝试在以下代码中找到第一个空值。我可以在select中使用where,但它会删除非null值。我想保留整个记录集,以便我可以使用rs.AbsolutePosition向用户报告哪一行为空。我基本上已将其设置为将临时表中用户输入的信息与另一个表进行比较。如果出现匹配字符串,则记录集应为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

它现在基本上什么也没做。甚至不会触发错误或不匹配。我做错了什么?

1 个答案:

答案 0 :(得分:1)

您的代码缩进已关闭,并且欺骗了您和我。

这就是你想要的 - 你错过了Else

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

请阅读How to debug VBA code,单步执行代码会立即发现问题。

"IsNull(string)""[String] Is Null"都可以,但"[String] Is Null"可能会有所改善。