ACCESS VBA 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の操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。