●概要●
NULL値のデータを評価するときは、IS NULLまたはIS NOT NULLを使用します。
NULL値は「無効な値」を表すため、他の演算子を使用して演算を行ってもNULL値が返されます。そのため、NULL値であるレコードを抽出する際に、「WHERE フィールド名 = NULL」と記述してもNULL値のレコードは抽出されません。
サンプルでは、IS NULLキーワードを使用して「職種」がNULL値のレコードを、IS NOT NULLキーワードを使用して「職種」がNULL値でないレコードを抽出します。
●サンプル●
'NULL値のレコードを抽出する
Public Sub Sample()
Dim myDB As Database
Dim myRS As DAO.Recordset
Dim mySQL1, mySQL2 As String
'SQLステートメントを定義する
mySQL1 = "SELECT * FROM 社員テーブル WHERE 職種 IS NULL;"
mySQL2 = "SELECT * FROM 社員テーブル WHERE 職種 IS NOT NULL;"
'カレントデータベースを変数に代入する
Set myDB = CurrentDb
'SQLステートメントを実行してレコードセットを開く
Set myRS = myDB.OpenRecordset(mySQL1, dbOpenDynaset)
'レコードセットの内容を表示する
Debug.Print "*** NULLレコード 検索 ***"
Do Until myRS.EOF
Debug.Print myRS!社員コード & " " & myRS!部署コード & " " _
& myRS!名前 & " " & myRS!入社年月日 & " " & myRS!職種
myRS.MoveNext
Loop
'SQLステートメントを実行してレコードセットを開く
Set myRS = myDB.OpenRecordset(mySQL2, dbOpenDynaset)
'レコードセットの内容を表示する
Debug.Print "*** NULLでないレコード 検索 ***"
Do Until myRS.EOF
Debug.Print myRS!社員コード & " " & myRS!部署コード & " " _
& myRS!名前 & " " & myRS!入社年月日 & " " & myRS!職種
myRS.MoveNext
Loop
'レコードセットを閉じる
myRS.Close
End Sub
●補足●
抽出結果は[イミディエイト]ウィンドウに表示されます。