ADOでデータベースに接続し、レコードを操作するためにRecordsetでデータベースをOpenする記述 カレントレコード(操作対象)のみを参照するため、一度に複数のレコードを操作することはできない ・Recordsetオブジェクトのオブジェクト変数を宣言
・オブジェクト変数にRecordsetオブジェクトのインスタンスを生成 ・BOF_カレントレコードが先頭レコードの前に位置していればTrue、そうでなければFalse ▼bookmarkの記述例▼ ・CurorType_カーソルタイプ(カレントレコードを動かす向きをどうするか) ▼ロックタイプについてより深く知りたい場合▼ ・Open_レコードセットをひらく データの名称 箇所には テーブル名・クエリ名・SQLステートメント等を記載 書式: Openメソッドの引数をRecordsetオブジェクトのプロパティに設定するパターン 取得したレコードセットは常に読み取り専用の前方スクロールカーソルとなるので注意
Recordsetオブジェクトの利用
知っておきたい前提事項
複数レコードに対して操作する場合には、loop処理を使用してカレントレコードを移動させる
※例えばSQLを使用してある程度対象レコードを絞ってから、Recordsetを使用してレコードを操作することも可能
Recordsetを開いた際にカレントレコードは先頭レコードに設定されている利用の流れ
・RecordsetオブジェクトのOpenメソッドまたはConnectionオブジェクトのExecuteメソッドでRecordsetオブジェクトのメソッドとプロパティ
プロパティ
カレントレコードの位置を取得して条件分岐に使用する等で使われるプロパティ
・EOF_カレントレコードが最終レコードの後に位置していればTrue、そうでなければFalse
・Recordcount_レコードの件数を返す
・Bookmark_設定したフィールドを保持
アクセスVBA講座_ADO_レコード移動
「03.Bookmarkプロパティ」参照主にOpenメソッドの引数として使われるプロパティ
∟adOpenFowardOnly※規定値_前方スクロール、前方向のみに移動、ほかのユーザの追加や更新・削除の確認はできない
∟adOpenStatic_全方向に移動することができる、ほかのユーザの追加や更新・削除の確認はできない
∟adOpenKeyset_全方向に移動することができ、ほかのユーザの追加や更新・削除の確認はできない
∟adOpenDynamic_全方向に移動することができて、ほかのユーザによる追加や更新・削除の確認もできる
・LockType_ロックタイプ(レコード単位の編集の可否)
∟adLockReadOnly※規定値_読み取り専用
∟adLockPessimistic_排他的ロック
∟adLockOptimistic_共有的ロック
∟adLockBatchOptimistic_共有的バッチ更新
∟adLockUnspecified_ロックタイプ指定なし
※排他的ロック・共有的ロックとは何かについては用語解説ページ側に記載
▼AccessVBA_用語集【基礎】▼
tama-shi.hatenadiary.com
https://www.itmedia.co.jp/help/howto/win/win2000/0007special/complus_vb/chap1/05.html
メソッド
・Close_レコードセットをとじる
・Move_カレントレコードを移動
∟MoveFirst / MoveLast / MoveNext / MovePrevious
・Find_レコードを検索
・Clone_レコードをコピー
・Update_レコードを更新
・Delete_レコードを削除
・AddNew_レコードの追加レコードセットを使用する際の書式
RecordsetオブジェクトのOpenメソッドで開く場合の記述1
Dim オブジェクト変数1 As ADODB.Connection 'Connectionオブジェクトのオブジェクト変数を宣言
Dim オブジェクト変数2 As ADODB.Recordset 'Recordsetオブジェクトのオブジェクト変数を宣言
Set オブジェクト変数1 = CurrentProject.Connection 'インスタンスを生成
Set オブジェクト変数2 = New ADODB.Recordset 'インスタンスを生成
オブジェクト変数2.Open データの名称 , オブジェクト変数1 , カーソルタイプ , ロックタイプ
RecordsetオブジェクトのOpenメソッドで開く場合の記述2
書式:
Dim オブジェクト変数1 As ADODB.Connection 'Connectionオブジェクトのオブジェクト変数を宣言
Dim オブジェクト変数2 As ADODB.Recordset 'Recordsetオブジェクトのオブジェクト変数を宣言
Set オブジェクト変数1 = CurrentProject.Connection 'インスタンスを生成
Set オブジェクト変数2 = New ADODB.Recordset 'インスタンスを生成
オブジェクト変数2.ActiveConnection = オブジェクト変数1
オブジェクト変数2.Source = データの名称
オブジェクト変数2.Open
ConnectionオブジェクトのExecuteメソッドで開く場合の記述
書式:
Dim オブジェクト変数1 As ADODB.Connection 'Connectionオブジェクトのオブジェクト変数を宣言
Dim オブジェクト変数2 As ADODB.Recordset 'Recordsetオブジェクトのオブジェクト変数を宣言
Set オブジェクト変数1 = CurrentProject.Connection 'インスタンスを生成
Set オブジェクト変数2 = オブジェクト変数1.Execute(コマンド) 'インスタンスを生成
※コマンド には、データの名称を入力
※この記述方法で、アクションクエリの指定も可能(オブジェクト変数1.Execute コマンド)
上述の書式を使用した実践編は以下の記事を参照
▼Recordsetその2▼
tama-shi.hatenadiary.com