Access VBA における db.OpenRecordset は、

Access VBA における db.OpenRecordset は、テーブルやクエリのデータをコード上で読み書き・操作するための入口です。以下に、初学者向けに分かりやすく整理した「OpenRecordset の概要解説」をお届けします。


目次

db.OpenRecordset の概要

🔷 1. どんなときに使う?

OpenRecordset は、Access VBAで テーブルやクエリのデータを取り出して、1行ずつ読み込んだり、書き換えたりしたいときに使う命令です。

たとえば:

  • あるテーブルの全レコードを1件ずつ確認したいとき
  • 条件に一致するデータを1件だけ取得したいとき
  • プログラム内でデータを更新・追加・削除したいとき

など、VBAでデータに直接アクセスしたいときに使います。


🔷 2. 基本構文

Set レコードセット = db.OpenRecordset("テーブル名またはSQL", レコードタイプ)

✅ よく使う形:

Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset("ユーザー", dbOpenDynaset)

🔷 3. レコードタイプ(第2引数)

定数名内容
dbOpenTableテーブルのみに使用(DAO専用)
dbOpenDynaset編集・追加・削除が可能なレコード
dbOpenSnapshot読み取り専用(編集不可)
dbOpenForwardOnly先頭から最後まで一方向に読み込み

🔷 4. 主な操作例

✅ レコードを1件ずつ読み込む

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

✅ データを追加

rs.AddNew
rs!氏名 = "田中"
rs!年齢 = 30
rs.Update

✅ データを更新

rs.Edit
rs!年齢 = rs!年齢 + 1
rs.Update

🔷 5. よくある用途

使用例説明
テーブル全件を一覧表示Do Until rs.EOF でループ処理
条件一致の1件を取得SQL文 + dbOpenSnapshot を使う
データを追加・編集するAddNew / Edit / Update を使う
件数を数えるrs.RecordCount(要:MoveLast 先)

🔷 6. 注意点

  • 使い終わったら rs.Close, Set rs = Nothing を忘れずに
  • フィールド名は rs!フィールド名 でアクセス(rs("フィールド名") も可)
  • SQL文で絞り込みも可能(例:"SELECT * FROM 顧客 WHERE 年齢 > 50"

✅ まとめ

特徴内容
用途テーブルやクエリのデータを取得・操作
メリットレコードを自由に読み書きできる
主な関数AddNew, Edit, Update, Delete, MoveNext, EOF など
初学者へのアドバイス最初は dbOpenSnapshot で読み取りから始めるのがおすすめ

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