ACCESS VBA ADOのFilterでレコードを抽出する方法

ADOのFilterでレコードを抽出する方法

ACCESS VBAでテーブルの操作を行う際に利用するのがADOです。

ADOには様々なメソッド、プロパティが用意されていますが特によく利用するのがFilterプロパティでしょう。

Filterプロパティを利用すると、レコードの抽出が可能です。

今回は、ACCESS VBAにおいて、ADOのFilterプロパティでレコードを抽出する方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

Filterプロパティの構文

ADOでフィルタープロパティを利用する際は以下の構文で利用します。

レコードセット.Filter = 抽出条件

抽出条件文はテキスト型で指定する必要があるので注意してください。

Filterプロパティを使ったレコード抽出の例

それでは、レコード抽出の例をいくつか挙げましょう。

rst1というレコードセットの変数を利用します。

基本的なFilter抽出


 rst1.Filter = "売上ID = 1"

最初の例は非常に単純で売上IDが1のレコードを抽出する、というものです。

変数を使ったFilter抽出


 rst1.Filter = "売上ID = " & uriage_id

次の例は変数uriage_idを使って抽出条件を指定しています。

ダブルクォーテーション(”)を付ける位置に注意してください。

複数条件でのFilter抽出


 rst1.Filter = "請求 = true and 顧客ID =" & kokyaku_id

条件文に複数の条件を指定することも可能です。
上記の例では2つの条件をAndでつないでいます。

Filter処理後のレコード数確認

Filterでのレコード抽出を行った後は、対象レコードの有無を確認しましょう。
レコード数はRecordCountプロパティで確認できます。

レコード数が0件の場合に、そのまま処理を進めてしまうとエラーが発生する可能性があるので、レコード数が0件の場合は処理を途中で終了するようにしておくと便利です。


 '対象レコードが無い場合
 If rst1.recordcount = 0 Then

    '処理終了
    Exit Sub

 End If

Filterをした後はこの処理をセットで記載するようにしておくとプログラムの精度が高まります。

以上、ADOのFilterでレコードを抽出する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。