Chapter5-1 DAOとADO

DAOとADO

VBAを使うと、テーブルやクエリのレコード1件1件にアクセスすることができます。そのようなプログラミングを行う際の注意点として、どのようなデータアクセス方法を使うかということが挙げられます。

同じデータベース内にあるテーブルやクエリであっても、外部のデータアクセス機能(ライブラリ)を呼び出し、それを仲介させることによってさまざまなレコード処理を行ないます。そして、どのような外部機能を使うかをあらかじめ選定しておく必要があります。具体的には、まったく同じレコードの読み込み・書き込み処理であっても、「DAO(Data Access Obiect)」を使う方法と「ADO(ActiveX Data Objects)」を使う方法の2つがあり、それぞれ異なるプログラミング手法が必要となります。




DAO(Data Access Obiect)

DAOは、Access固有のデータベースエンジンである「Jetデータベースエンジン」(.accdbや.mdbファイル)へのアクセスに特化したデータアクセス方法です。
Access登場の初期から使われており、Accessとともにバージョンアップを繰り返してきました。Accessデータベースの特性にもっともフィットした、もっとも縁の深い成熟したデータアクセス方法といえるでしょう。
Accessでは2000からADOも使えるようになりましたが、現在でもローカルのAccess単体のデータベースにアクセスするには十分に健在といえるアクセス方法です。




ADO(ActiveX Data Objects)

ADOは、Access2000から採用された、データアクセス方法です。
ADOでは、「OLE DBプロバイダ」という仕組みを介して、Accessデータベースはもちろん、SQL ServerやOracleなどのデータベースエンジンにアクセスします。
DAOの場合には、「ODBC」という古い仕組みを介してSQL Serverなどのデータベースにアクセスしなければなりませんでしたが、OLE DBプロバイダを使うことによって、より高速なアクセスが可能となりました。
したがって、特にAccess以外のデータベースエンジンに接続するような場合に効力を発揮するといえるでしょう。
また、Accessだけでなく、VB、VBScript、Javaといったプログラミング言語においても、またWebアプリケーションの作成においても、推奨されるデータインタフェースです。




■参照設定について

Accessでは、DAOとADOどちらでも使えることから、あらかじめどちらを使うかを設定しておく必要があります。DAOもADOも、その機能の実体は、Access外部のライブラリファイルとして提供されていますので、VBAにその参照先を知らせておく必要があります。

それには次のような設定操作を行います。

  1. VBEの画面を表示

  2. VBEのメニューより[ツール]-[参照設定]を選択

  3. 「参照設定」ダイアログが表示されたことを確認

  4. DAOを使う場合には、[参照可能なライブラリファイル]の一覧の中から、"Microsoft DAO 3.X Object Library"の項目にチェックを付ける

  5. ADOを使う場合には、"Microsoft ActiveX Data Objects X.X Library"の項目にチェックを付ける

  6. 最後に[OK]ボタンをクリックして、参照設定ダイアログを閉じる
なお、Accessのバージョンによっては、DAO/ADOいずれか(2003では両方)がデフォルトで設定されていますので、一応確認は必要ですが、デフォルトのままでよければ必ずしも上記設定操作を行う必要はありません。


■DAOかADOか?
DAO/ADOにはそれぞれ特徴があります。DAOは古いが安定的でAccessに特化しています。またADOは新しい手法でAccess以外への応用性が高くなっています。どちらにすべきか、ルールも決定的な差もありませんが、おおむね次のような基準がお奨めです。
  • Access単体ならDAO
  • VBなどからACCDBやMDBにアクセスする場合はADO
  • (将来的なAccessからの移行も含めて)SQL Serverなどを使う場合はADO

※以降の説明では、同じAccessデータベース上のテーブルやクエリを処理するということなどから、DAOを使った方法で説明します。

※DAOもADOも、1つのオブジェクトとして扱います。その階層構造においては、中には同名のオブジェクト/プロパティ/メソッドが存在します。両方とも参照設定した場合には、その識別子として、オブジェクト名の前に「DAO.」または「ADO.」を付ける必要があります。
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved