2017-07-20 62 views
1

我想在下面的代碼找到first null值。我可以使用選擇的位置,但它會刪除非空值。我想保留整個記錄集,這樣我就可以使用rs.AbsolutePosition向用戶報告哪一行是空的。我基本上已經設置它來將用戶在臨時表中輸入的信息與另一個表進行比較。如果匹配的字符串在那裏出現,否則在記錄集上應該爲空。VBA訪問 - FindFirst空值

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 

它現在基本上什麼也沒做。甚至不會觸發錯誤或不匹配。我究竟做錯了什麼?

+0

嘗試'strIsN =「[String]爲空'' – Andre

+0

不起作用,甚至不會觸發不匹配。當我使用該SQL創建一個選擇查詢時,有3個結果,2個爲空。 – Jaehaerys68

+0

我也嘗試過IsNull(string)='True'作爲字符串,它不接受匹配,但仍然不起作用 – Jaehaerys68

回答

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"可能會稍微好一點。

+0

啊謝謝!不能相信我做到了,併發布了它。我所有的其他發現都有。我會責怪自己很累。 – Jaehaerys68