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 で読み取りから始めるのがおすすめ |
