トップ > スキル : アプリケーション > VBA for Access > 応用編(データベースオブジェクト DAOとADO)

VBA_Access

データベースオブジェクトとは


直接的にデータベースを操作するには、DAOやADOを用います。例えば、一括したデータ操作であればクエリを使いますが、レコードを1つずつ確認する必要があるようなデータ操作はクエリやマクロでは実現できません。クエリを介さなくて、テーブルのデータに直接アクセスして加工するような操作ができるのがデータベースオブジェクトとなります。

VBAには、データベースを操作する専用のオブジェクトであるDAO(Data Access Object)とADO(ActiveX Data Object)が搭載されています。基本的にこれらのすべてを理解する必要はありません。

DAOはデータベースを操作するためのオブジェクトとして、以前からAccessに搭載されているスタンドアロン(Access単体)型システムの構築向けのものです。DAOは、「Jet Database Engine」を経由して実現できます。

ADOもデータベースを操作するためのオブジェクトですが、Access 2000から搭載され、外部データベース(SQL Serever、Oracleなど)を使った、複数のユーザで利用するシステム構築用となります。ADOは、「OLEDBプロバイダ for Jet」を経由して実現できます。

DAOとADOが使用できるかを確認

DAOとADOが現在のAccessで使用できるかどうかを確認する必要があります。

VBE画面のメニュー[ツール]-[参照設定]をクリックし、表示される[参照設定]ダイアログボックスから確認できます。

Accessのバージョンによっては最初からチェックがついていることもありますが、チェックがついていない場合は手動でチェックします。


◆ DAOとADOの使い分け

DAOは、1台のPCでJetデータベースを使うのであればDAOが適しています。将来的にも複数のユーザが使えるようなシステムの拡張がない場合にはDAOを使います。

ADOは、外部データベース(Oracle、SQL Server、MySQLなど)との連携や将来移行する予定がある場合にこれでシステムを構築します。

※ Jetデータベースとは、Accessのデータベースのことを指します。

データベースを操作するための基本手順

DAOやADOを使って、データベースを操作する基本手順は以下の通りです。

  1. データベースに接続する(オブジェクト変数を宣言して、データベースを開く)
  2. データへの処理
  3. データベースを切断する(オブジェクト変数を解放して、データベースを閉じる)

基本手順を見ると分かるように、これまでのプロシージャと異なり、最初にデータベースに接続して最後にデータベースを閉じる記述を行います。これは、Jetデータベース(Accessのデータベース本体)に問い合わせるための処理で、最後には問い合わせを終了する処理を記述することになります。