access-dao-ado

DAO(Data Access Objects)と ADO(ActiveX Data Objects)は、Access VBA でデータベースに接続・操作するためのライブラリですが、目的・対象・使い勝手にいくつか違いがあります。


目次

✅ DAO と ADO の違いまとめ

項目DAOADO
主な対象Microsoft Access(Jet/ACE) データベース外部データベース(SQL Server, MySQL 等)
接続方式Access ネイティブ接続(Jet/ACEエンジン)OLE DB / ODBC 経由
パフォーマンスAccess に最適化されて高速ネットワーク経由の接続に最適化
操作対象TableDef, QueryDef, Recordset(ローカル向け)Connection, Command, Recordset(外部向け)
接続の自由度ODBC接続は弱いODBC や DSNレス接続に強い
適している用途Access ファイルの操作、リンクテーブルの管理MySQL、SQL Serverなどへの接続とデータ取得
サポート形式DAO.Recordset(レコード単位)ADO.Recordset(柔軟、XML対応もあり)
モダンさ/将来性古いがAccessに最適より汎用的で他アプリケーションにも適用可能

✅ 使用例の違い

🔹 DAO 例(Access 内部テーブルの操作に適する)

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("顧客マスタ")

Do Until rs.EOF
    Debug.Print rs!氏名
    rs.MoveNext
Loop

rs.Close

🔹 ADO 例(MySQLやSQL Serverと接続する場合)

Dim conn As Object
Dim rs As Object

Set conn = CreateObject("ADODB.Connection")
conn.Open "Driver={MySQL ODBC 8.0 Unicode Driver};Server=localhost;Database=test;User=root;Password=pass;"

Set rs = CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM 顧客マスタ", conn

Do Until rs.EOF
    Debug.Print rs.Fields("氏名").Value
    rs.MoveNext
Loop

rs.Close
conn.Close

🔍 結論:どちらを使うべき?

シーン推奨ライブラリ
Access の内部データ操作DAO
MySQL や SQL Server の操作ADO
テーブル定義・リンク管理DAO
DSNレス接続・汎用性重視ADO

よかったらシェアしてね!
目次