Access VBA OpenRecordset 概要とパラメータを解説

db.OpenRecordset は、Access VBA(DAO)でテーブル・クエリ・SQL文からレコードセット(データの集合)を取得するためのメソッドです。データの読み取り・編集・検索・ループ処理などに頻繁に使います。


目次

✅ 構文

Set rs = db.OpenRecordset(Source, [Type], [Options], [LockEdit])

✅ パラメータの意味

引数必須説明
Sourceテーブル名、クエリ名、またはSQL文(文字列)
Type×レコードセットの種類(dbOpenTable, dbOpenDynaset, dbOpenSnapshot など)
Options×オプション(dbReadOnly, dbSeeChanges など)
LockEdit×編集のロックモード(dbOptimistic, dbPessimistic など)

✅ よく使うレコードセットタイプ(Type

定数名内容・用途
dbOpenTable単純なテーブルアクセス用。更新可能。
dbOpenDynasetテーブル・クエリ・SQLの結果を読み書き可で取得
dbOpenSnapshot読み取り専用(軽量・高速)。参照用途向き。

✅ 例1:テーブルから読み取り(編集不可)

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

✅ 例2:SQLでフィルタして取得(編集可能)

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM ユーザー WHERE メール LIKE '%gmail.com%'", dbOpenDynaset)

✅ 例3:編集モードを指定して開く

Set rs = db.OpenRecordset("ユーザー", dbOpenDynaset, dbSeeChanges, dbOptimistic)

✅ オプション(Options)

定数内容
dbReadOnly読み取り専用として開く
dbSeeChanges複数ユーザーの編集競合を検出(SQL Server等)

✅ LockEdit(ロックモード)

定数説明
dbOptimistic編集が確定するまでロックしない(高速)
dbPessimistic編集時点でレコードをロック

✅ 使用後の後処理は必須

rs.Close
Set rs = Nothing

これを忘れるとリソースリークやデータベースロックの原因になります。


✅ 主な用途例

処理使用例
一覧表示フォームのループ出力などに使用
条件検索SQLを指定して特定のデータ取得
データ更新rs.Edit.Update で直接書き換え
件数集計などrs.RecordCount でレコード数確認

✅ まとめ

操作方法例
テーブル参照OpenRecordset("テーブル名", dbOpenSnapshot)
編集可能に開くOpenRecordset("クエリ", dbOpenDynaset)
SQL指定で開く"SELECT * FROM ..." を指定

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