ACCESS VBA ADOでレコードセットを取得する方法

ADOでレコードセットを取得する方法

ACCESSではVBAを利用するとかなり様々な機能を作成できます。
その際、VBAでテーブルのレコードを追加、削除、更新する場合は、ADOを使用する必要があります。

今回は、ADOでレコードセットを取得する方法をご紹介します。


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

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

Openメソッドでレコードセットを取得

ADOではレコードセットオブジェクトを定義した後で、オブジェクトにテーブルやクエリを代入します。
この際に利用するのがOpenメソッドです。

Openメソッドは以下の構文で利用します。

レコードセット.Open テーブル名 , コネクション , カーソルタイプ , ロックタイプ

例えば、TRN_年月というテーブルをADOで操作したい場合、rst1というレコードセットを定義して以下のように記述します。


 Dim cnn As ADODB.Connection
 Dim rst1 As ADODB.Recordset

 Set cnn = CurrentProject.Connection
 Set rst1 = New ADODB.Recordset
 rst1.CursorLocation = adUseClient

 rst1.Open "TRN_年月", cnn, adOpenKeyset, adLockOptimistic

最後の一行でrst1というレコードセットオブジェクトに、テーブル「TRN_年月」を代入しました。

レコードセットの取得の際は引数としてカーソルタイプトロックタイプパラメータを設定できます。

それぞれのパラメータの意味は以下の通りです。
基本は、adOpenKeyset, adLockOptimisticにしておけば問題はないです。

カーソルタイプ(CursorType)

レコードセットオブジェクトの前後の動作を指定します。

柔軟に動作させるようにするとメモリ消費が大きくなります。

adOpenForwardOnly前方スクロールカーソル。前方スクロールのみだが高速。検索を一度のみ実施する場合などに利用。
adOpenKeysetキーセットカーソル。他のユーザーによる追加・削除は確認できない。
adOpenDynamic動的カーソル。レコードをすべての方向に移動することができる。他のユーザーによる追加・削除が確認できる。
adOpenStatic静的カーソル。レコードをすべての方向に移動することができる。他のユーザーによる追加・削除は確認できない。

ロックタイプ(LockType)

レコードセットオブジェクトの編集可否を指定します。

間違って上書きしたくない場合は、adLockReadOnlyで読み込むとよいでしょう。

adLockReadOnly読み取り専用
adLockPessimisticレコード単位の排他的ロック
adLockOptimisticレコード単位の共有的ロック
adLockBatchOptimistic共有的バッチ更新
adLockUnspecifiedロックタイプを指定しない

以上、ADOでレコードセットを取得する方法をご紹介しました。


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

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

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

サービス一覧

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