Access VBA DAOを用いたデータベースアクセス

DAO

Accessでデータベースの作成を進めると、VBAでデータの処理をしたいといったニーズが出てきます。VBAでデータを操作する方法としては、ADOによる処理もありますが、ここではDAO(Data Access Object)を用いた方法について紹介します。

ADOの基本的な使用方法については、以下の記事をご参照ください。

それでは、DAOの基本的な操作として、まずはサンプルデータを用意します。

スポンサーリンク

サンプルデータについて

サンプルデータとして、「T_商品」テーブルを作成し、「ID」及び「商品名」フィールドを作成します。それぞれのデータ型は「オートナンバー型」及び「短いテキスト」とします。

続いて、サンプルデータを表1に示すように登録します。

表1 サンプルデータ

ID商品名
1ごまスティック
2きらず揚げ
3しるこサンド
4八つ橋

以上のサンプルデータを用意したところで、DAOによるデータ操作の方法を見ていきましょう。

DAOによるデータ操作

まずは、DAOを用いるためにライブラリの設定が必要になります。

「Alt+F11」キーを押下し、Microsoft Visual Basic for Application(以下、VBA)画面を開きます。

続いて、図1に示すように「ツール」→「参照設定」とクリックします。

図1 DAO参照設定のための準備

参照設定用の画面が開くため、「Microsoft Office XX.X Access database engine Object Library」にチェックを入れます。ここで、「XX.X」はバージョンごとに数値が変わりますので、お手元のAccessバージョンに合ったものにチェックを入れてください。

図2 DAO参照設定のチェック

これで、DAOを使うことができるようになりましたので、早速簡単なデータ処理を実装していきましょう。まず、「挿入」→「標準モジュール」と選択し、コードを入力するための準備をします。

図3 標準モジュール作成の準備

「Module1」が新たに作られ、コードウィンドウが表示されますので、ここに以下のコードを追記します。なお、今回は「DAO_Sample Subプロシージャ」に「T_商品」テーブルの「ID」及び「商品名」をレコード順にイミディエイトウィンドウに表示するためのコードを記載するようにしました。

レコードセットを作成するにあたっては、SQL文を用いていますが、SQLを使ったことがない方は以下の書籍が参考になると思いますので、一読されることをお勧めいたします。

スポンサーリンク

また、ループ処理は順番にレコードの値を取得していき、レコードセットの「End Of File (EOF): レコードの最後尾」になった段階で抜け出すこととしています。

Private Sub DAO_Sample()

'変数宣言
Dim db As DAO.Database
Dim rs As DAO.Recordset

'現在開いているデータベースに接続する。
Set db = CurrentDb

'SQL文でT_商品を開くためのレコードセットを作成する。
Set rs = db.OpenRecordset("SELECT ID, 商品名 FROM T_商品", dbOpenDynaset)

'先頭レコードに移動する。
rs.MoveFirst

'ループにより順番にレコードの値を表示する。
Do Until rs.EOF = True

  Debug.Print "ID: " & rs!ID & ", 商品名: " & rs!商品名 '次のレコードに移動する。
  rs.MoveNext

Loop

'レコードセットを閉じる。
rs.Close
Set rs = Nothing

'データベースの接続を閉じる。
db.Close
Set db = Nothing

End Sub

図4 DAOを用いたコード入力と実行 

コードを追記した後、画面上の「▶」アイコンをクリックします。これにより、図5に示すように、イミディエイトウィンドウに「T_商品」の「ID」及び「商品名」のデータが順番に表示されました。

図5 DAOによるデータ抽出結果

このように、DAOを用いることで、カレントデータベース(現在開いているデータベースのこと)にアクセスし、レコードを自由に操作することができるのです。

まとめ

今回は、DAOを用いてAccessデータベースのデータ操作方法について紹介をしました。DAOを用いると、データを更新したり、レコードを削除したり、またテーブルそのものを作成することもできます。今後の記事でこれらについては、紹介していきたいと思いますので、引き続きご愛顧のほど宜しくお願いいたします。

DAOについては、以下の書籍でも紹介されていますので、ご参考になさってください。

スポンサーリンク

コメント

タイトルとURLをコピーしました