ray88’s diary

お仕事で困ったとき用の自分用の覚書

ADO Recordsetオブジェクトの主なプロパティ

■主なプロパティその①

プロパティ 説明
BOF カレントレコードが先頭レコードの前にあるときTrueを、それ以外の時はFalseを返す
EOF カレントレコードが最終レコードの後にあるときTrueを、それ以外の時はFalseを返す
RecordCount レコード件数を返す

■CursorTypeプロパティ:カーソルタイプを返す

定数 他ユーザによる追加・削除の確認 他ユーザによる更新の確認 説明
adOpenForwardOnly(既定) × × 0 前方スクロールカーソル・レコードの前方向のみ移動可能。処理が高速
adOpenKeyset × 1 キーセットカーソル・レコードの全方向移動可能
adOpenDynamic 2 動的カーソルレコードの全方向移動可能
adOpenStatic × × 3 静的カーソル・レコードの全方向移動可能

■CursorLocationプロパティ:カーソルの場所を指定する

定数 説明
adUseServer 2 (既定)サーバ側のカーソルを使う
asUseClient 3 クライアント側のカーソルを使う

■LockTypeプロパティ:ロックタイプを返す

定数 説明
adLockReadOnly(既定) 1 読み取り専用
adLockPessimistic 2 レコード単位の排他的ロックを表す
adLockOptimistic 3 レコード単位の共有ロックを表す
adLockBatchOptimistic 4 共有バッチ更新を表す
adLockUnspecified -1 ロックタイプを指定しない

■Bookmarkプロパティ:レコードを識別するためのブックマークを表す

ADO データベースへの接続(Connection オブジェクト)

■ConnectionオブジェクトはDBへの接続を保持するオブジェクトです。

Connectionオブジェクトの主なプロパティ

プロパティ 説明
ConnectionString データベースへの接続情報を返す
State データベースへの接続状態を返す

Connectionオブジェクトの主なメソッド

メソッド 説明
Open データベースへの接続を開く
Close データベースへの接続を閉じる
Execute コマンドを実行する
BeginTrans トランザクションを開始する
CommitTrans 変更を保存してトランザクションを終了する
RollbackTrans 変更を取り消してトランザクションを終了する

【カレントデータベースに接続する場合】

Dim CN As ADODB.Connection
SET CN = CurrentProject.Connection

【カレント以外のデータベースに接続する場合】

Dim CN As ADODB.Connection
Set CN = New ADODB.Connection
CN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                          "Data Source=データベースのパス"
 CN.Open

【データベースファイルにパスワードがかかっている場合の接続方法】

Dim CN As ADODB.Connection
Set CN = New ADODB.Connection
CN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                      "Data Source=データベースのパス;" & _
                      "Jet OLEDB:Database Password=xxxxx;"
 CN.Open

【参考】
予めConnectionStringプロパティに接続文字列を設定しなくてもOpenメソッドの第一引数に直接接続文字列を指定することでDBに接続できる。

Dim CN As ADODB.Connection
Set CN = New ADODB.Connection
CN.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                          "Data Source=データベースのパス"

■Stateプロパティの戻り値

戻り値 説明
adStateOpen データベースに接続している
adStateClosed データベースに接続していない

【DBの接続状態を確認する/カレントデータベース】

Sub Test1()
    Dim CN As ADODB.Connection
    Set CN = CurrentProject.Connection
    Select Case CN.State
    Case adStateOpen
        MsgBox "データベースに接続しています"
    Case adStateClosed
        MsgBox "データベースに接続していません"
    End Select
    Set CN = Nothing
End Sub

【DBの接続状態を確認する/カレント以外のデータベース】

Sub Test2()
    Dim CN As ADODB.Connection
    Set CN = New ADODB.Connection
    CN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                          "Data Source=" & CurrentProject.Path & _
                          "\test.accdb"
    CN.Open
    Select Case CN.State
    Case adStateOpen
        MsgBox "データベースに接続しています"
    Case adStateClosed
        MsgBox "データベースに接続していません"
    End Select
    CN.Close
    Set CN = Nothing
End Sub

■定数の値確認用参考URL およびプロバイダの設定値確認用URL
データベース(Access 等)に接続(ADO) | ExcelWork.info