2017-07-20 13 views
1

次のコードでfindfirst null値を取得しようとしています。私はちょうど選択のどこで使用することができますが、それは非null値を削除します。 rs.AbsolutePositionを使用して、どの行がnullであるかをユーザーに報告できるように、レコードセット全体を保持します。私は基本的には、ユーザーが入力した一時テーブルの情報を別のテーブルと比較するように設定しました。一致する文字列がある場合はそれが表示され、そうでない場合はレコードセットでnullになります。VBAアクセス - FindFirst 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 

これは基本的に今は何もしません。エラーを起こしたり、マッチしたりしません。私は間違って何をしていますか?

+0

試してみる 'strIsN =" [String] Is Null "' – Andre

+0

は動作しません。そのSQLを持つ選択クエリを作成すると3つの結果があり、2つはnullです。 – 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