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