Recordsetとは|Recordsetでレコード数を取得するサンプル:Access VBA入門

DAOで使用するRecordsetついて掲載します。

Recordsetとは、テーブルをレコード単位で操作できるオブジェクトです。Recordsetでレコード数やフィールド名などが取得できたり、レコード間を移動することなどができます。

Recorsetの種類

  • テーブルタイプ : テーブルのレコード。レコードのデータを編集できます。編集結果はテーブルに反映されます。
  • ダイナセットタイプ : クエリのレコード。レコードのデータを編集できます。編集結果はクエリ内のテーブルに反映されます。
  • スナップショットタイプ : クエリの実行結果のレコード。レコードのデータは編集できません。
BackHome BackVBA入門


Recordsetの構文

Set recordset = database.OpenRecordset (Name, type, options, lockedits)
  • recordset : Recordset型のオブジェクト変数を指定
  • database : Database型のオブジェクト変数を指定
  • Name : テーブル名かクエリー名
  • type : (省略可能) Recordsetの種類
  • options : (省略可能) Recordsetの特性を指定する定数
  • lockedits : (省略可能) Recordsetのロック状態
● typeの定数
  • dbOpenTable : テーブルタイプのRecordsetオブジェクト
  • dbOpenDynaset : ダイナセットタイプのRecordsetオブジェクト
  • dbOpenSnapshot : スナップショットタイプのRecordsetオブジェクト
  • dbOpenForwardOnly : 前方スクロールタイプのRecordsetオブジェク
● optionsの定数
  • dbAppendOnly : (ダイナセット)レコードの追加はできるが、編集および削除はできない
  • dbSeeChanges : (ダイナセット)編集中のデータを他のユーザーが変更しようとした場合にエラーが発生
  • dbDenyWrite : (テーブル・ダイナセット・スナップショット・前方スクロール)他のユーザーはレコードの修正や追加できない
  • dbDenyRead : (テーブル)他のユーザーはテーブルのデータの読み取りはできない
  • dbForwardOnly : (スナップショット)前方スクロール タイプのRecordset オブジェクトを作成
  • dbReadOnly : (テーブル・ダイナセット・スナップショット・前方スクロール)他のユーザーはRecordset の変更はできない
  • dbInconsistent : (ダイナセット・スナップショット)矛盾を許す更新が可能
  • dbConsistent : (ダイナセット・スナップショット)一貫性のある更新のみが可能
● lockeditsの定数
  • True : (既定値)排他的ロックが有効
  • False : 編集する場合共有的ロックが有効

● Recordsetでテーブルのレコード数を求めるVBA

イミディエイトウィンドウに結果を表示しています。
Recordsetでテーブルのレコード数を求めるVBA

Set rs = Nothing はオブジェクト変数を開放するコードです。
メモリが開放されるわけではないので必ずしも必要ではありませんが、プログラムが分かり易くなるので、癖として行った方がいいように思います。

Sub MyRecordSet()
    Dim db As Database
    Dim rs As Recordset
    
    Set db = CurrentDb()
    Set rs = db.OpenRecordset("T-顧客マスター", dbOpenTable)
    
    Set rs = db.OpenRecordset
    Debug.Print "レコード数: " & rs.RecordCount
    Set rs = Nothing
    Set db = Nothing
End Sub


BackHome BackVBA入門

Copyright(C) FeedSoft