即効テクニック |
●概要● 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
●補足● 抽出結果は[イミディエイト]ウィンドウに表示されます。