Access VBAを学び始めると、
- DAOって何?
- Recordsetはいつ使うの?
- DLookupとの違いは?
- DAOで何ができるの?
という疑問を持つ方が多いです。
DAO(Data Access Objects)はAccess VBAでデータベースを自由自在に操作するための最重要技術です。
実際の業務システムでは、
顧客管理、売上管理、設備管理、在庫管理、CSV取込、バッチ処理
といった様々なデータベースにおいて、ほぼ全てでDAOを活用できます。
今回は「DAOで何ができるのか」を実務目線で整理して紹介します。
DAOとは
DAOは
Data Access Objects
の略です。
Accessデータベースへアクセスするためのオブジェクト群です。
主なオブジェクト
Database
Recordset
QueryDef
TableDef
Field
実務では特に
Database
Recordset
を頻繁に利用します。
DAOでできること一覧
DAOで実現できる代表的な機能です。
| 機能 | 利用頻度 |
|---|---|
| テーブル検索 | ★★★★★ |
| SQL実行 | ★★★★★ |
| データ追加 | ★★★★★ |
| データ更新 | ★★★★★ |
| データ削除 | ★★★★★ |
| レコード件数取得 | ★★★★★ |
| CSV取込後チェック | ★★★★☆ |
| トランザクション処理 | ★★★★☆ |
| クエリ実行 | ★★★★☆ |
| テーブル定義取得 | ★★★☆☆ |
できること① データ検索
最も利用頻度が高い処理です。
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * " & "FROM T_CUSTOMER")
レコード取得
Do Until rs.EOF
Debug.Print rs!顧客名
rs.MoveNext
Loop
活用例
顧客検索
売上検索
設備検索
履歴検索
できること② データ追加
レコード登録です。
rs.AddNew
rs!顧客コード = "C001"
rs!顧客名 = "東京商事"
rs.Update
活用例
顧客登録
売上登録
履歴登録
ログ登録
できること③ データ更新
既存データ編集です。
rs.Edit
rs!顧客名 = "大阪商事"
rs.Update
活用例
顧客情報変更
設備状態変更
在庫更新
できること④ データ削除
不要レコード削除です。
rs.Delete
活用例
誤登録削除
履歴削除
一時データ削除
できること⑤ SQL実行
実務では最も利用します。
CurrentDb.Execute "UPDATE T_CUSTOMER " & "SET 顧客区分='A'"
活用例
一括更新
一括削除
バッチ処理
できること⑥ レコード件数取得
件数確認です。
rs.MoveLast
Debug.Print rs.RecordCount
活用例
検索件数表示
取込件数確認
登録件数確認
できること⑦ トランザクション処理
重要処理向けです。
DBEngine.BeginTrans
CurrentDb.Execute strSQL1
CurrentDb.Execute strSQL2
DBEngine.CommitTrans
失敗時
DBEngine.Rollback
活用例
受注登録
在庫更新
売上確定
できること⑧ CSV取込チェック
データ存在確認です。
strSQL = "SELECT * " & "FROM T_CUSTOMER " & "WHERE 顧客コード='C001'"
活用例
重複チェック
マスタチェック
取込エラー確認
できること⑨ DLookupより高速な検索
初心者はDLookupを使います。
DLookup(…)
DAOの場合
OpenRecordset
を利用します。
メリット
高速
複数件対応
柔軟
できること⑩ クエリ実行
保存クエリを実行できます。
CurrentDb.QueryDefs("Q_CUSTOMER").Execute
活用例
月次処理
集計処理
CSV取込
できること⑪ テーブル一覧取得
テーブル管理です。
Dim tdf As DAO.TableDef
For Each tdf In CurrentDb.TableDefs
Debug.Print tdf.Name
Next
活用例
管理ツール
保守ツール
できること⑫ フィールド情報取得
項目確認です。
Dim fld As DAO.Field
For Each fld In rs.Fields
Debug.Print fld.Name
Next
活用例
CSV自動マッピング
テーブル解析
実務で最もよく使うDAO機能
開発現場の利用頻度です。
| 順位 | 機能 |
|---|---|
| 1位 | OpenRecordset |
| 2位 | Execute |
| 3位 | RecordCount |
| 4位 | AddNew |
| 5位 | Edit |
| 6位 | Delete |
| 7位 | BeginTrans |
| 8位 | QueryDefs |
| 9位 | TableDefs |
| 10位 | Fields |
実際には
OpenRecordset
Execute
だけで全体の8割以上を占めます。
DAOが活躍するシステム
特に相性が良いシステムです。
顧客管理システム
検索
登録
更新
売上管理システム
集計
更新
履歴管理
設備管理システム
点検履歴
設備台帳
状態管理
CSV取込システム
取込
重複確認
登録
夜間バッチ処理
一括更新
一括削除
履歴作成
Copilot活用術
DAOはCopilotとの相性が非常に良いです。
DAOコード生成
Access VBAです。
DAOを利用して
顧客テーブルを検索する
コードを作成してください。
SQLレビュー
以下のDAOコードを
レビューしてください。
トランザクション作成
DAOでトランザクション処理を
作成してください。
まとめ
DAOはAccess VBA開発の中心となる技術です。
DAOを利用すると、
- データ検索
- データ追加
- データ更新
- データ削除
- SQL実行
- トランザクション処理
- CSV取込チェック
- バッチ処理
など、業務システムに必要なほぼ全てのデータベース操作を実現できます。
Access VBAを本格的に習得したいのであれば、
まずは
CurrentDb.OpenRecordset
CurrentDb.Execute
の2つから覚えるのがおすすめです。
この2つを使いこなせるだけで、実務システム開発の大部分に対応できるようになります。

コメント