読者です 読者をやめる 読者になる 読者になる

checkpoint

自分用のIT技術系ノートです。古い情報や間違っている情報もあるので注意。

ADOのRecordsetで重要な3つのプロパティ

VB6/VBA

いまさら感たっぷりのADO・Recordsetの忘れてはいけない3つのプロパティ。

  • CursorLocation
    • adOpenServer(サーバーカーソル)=2

サーバー側に結果セットを保持。

    • adOpenClient(クライアントカーソル)=3

クライアント側に結果セットを保持
CursorTypeは静的カーソルだけになる。(設定不要)

  • CursorType
    • adOpenForwardOnly(前方専用カーソル)=0

前から後ろに向かってだけカーソルを移動できる。
複数行まとめてクライアントにデータ転送される。
参照だけなら最速。ADO.NETのDataReaderも同じようなもの。

    • adOpenStatic(静的カーソル)=3

結果セットを丸ごと保持する。他ユーザーの変更は確認できない。
クライアントカーソルのこれはADO.NETのDataSetと同じようなもの。

    • adOpenDynamic(動的カーソル)=2

実テーブルから1レコードずつフェッチする。

    • adOpenKeyset(キーセットカーソル)=1

サーバーに結果セットのキー列セットが保持される。
他ユーザーの変更は確認できる。追加・削除は確認できない。

  • LockType
    • adLockReadOnly(読取専用)=1

レコードの編集・削除不可

    • adLockPessimistic(排他ロック)=2

レコードを排他ロックする。編集開始からUpdate・CancelUpdateまでロック。

    • adLockOptimistic(共有ロック)=3

レコードを共有ロックする。Updateしたときにロック。

    • adLockBatchOptimistic(共有バッチ更新)=4

バッチ更新モードに必要。


遅延バインディングの場合は定数名が使えないので値を指定する。
まぁ、前方専用かクライアントカーソルしか使わないだろうけど。