即効テクニック |
●概要● 構文 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」と記述すれば、抽出前のレコードセットを、抽出を実行したレコードセットで上書きできます。