●概要●
構文 expression.Filter 取得/設定
設定項目 内容
expression Recordsetオブジェクトを指定[省略不可]]
ダイナセットタイプまたはスナップショットタイプのRecordsetオブジェクトに含まれるレコードの抽出条件を設定します。設定値は文字列型で、SQLステートメントのWHERE句から予約語「WHERE」を除いた値になります。
Filterプロパティに抽出条件を設定しても、それだけでは抽出は実行されません。そのRecordsetオブジェクトをもとに、新規にRecordsetオブジェクトを開いた時点で、条件に一致するレコードが抽出されたRecordsetオブジェクトが作成されます。
次のコードは、インプットダイアログで入力した商品名のレコードを抽出するものです。
●設定●
動作確認をするためには、Visual Basic Editorのメニューから[ツール]→[参照設定]コマンドを選択し、[参照設定]ダイアログボックスで「Microsoft DAO 3.6 Object Library」にチェックを入れてください。
●サンプル●
Sub ConditionFilterSample()
Dim myRS As DAO.Recordset, myRS2 As DAO.Recordset
Dim myStr As String
'[販売クエリ]をダイナセットタイプのレコードセットとして開く
Set myRS = CurrentDb.OpenRecordset("販売記録クエリ", dbOpenDynaset)
'抽出条件の入力
myStr = InputBox("商品名を入力してください")
'抽出条件の設定
myRS.Filter = "商品名 = '" & myStr & "'"
'Recordsetオブジェクトを作成
Set myRS2 = myRS.OpenRecordset
'条件に一致するレコードが存在しない場合
If myRS2.EOF Then
MsgBox "該当するレコードがありません"
'条件に一致するレコードが存在する場合
Else
'最後のレコードに移動
myRS2.MoveLast
MsgBox myRS.RecordCount & " 件中 " & myRS2.RecordCount & _
" のレコードが抽出されました"
End If
myRS.Close
myRS2.Close
End Sub
●補足●
抽出の前後でRecordsetオブジェクトを分ける必要がない場合、「Set myRS = myRS.OpenRecordset」と記述すれば、抽出前のレコードセットを、抽出を実行したレコードセットで上書きできます。