ray88’s diary

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

ADO レコードの更新・Updateメソッド

【Updateメソッドの引数としてフィールド名、値を渡す】

RS.Update フィールド1,1
RS.Update フィールド2,2

(例)

Sub Test1()
    Dim CN As ADODB.Connection
    Dim RS As ADODB.Recordset
    Dim SQL As String
    Set CN = CurrentProject.Connection
    Set RS = New ADODB.Recordset
    SQL = "SELECT * FROM T社員名簿 WHERE 社員番号 = 1002;"
    RS.Open SQL, CN, adOpenKeyset, adLockOptimistic
    RS.Update "部署コード", "B099"
    RS.Update "給与", "500000"
    RS.Close: CN.Close
    Set RS = Nothing: Set CN = Nothing
End Sub

f:id:ray88:20201125232939p:plain
【FieldオブジェクトのValueプロパティに値を代入し、Updateメソッドを実行する】

RS("フィールド1").Value =1
RS("フィールド2").Value =2
RS.Update

(例)

Sub Test2()
    Dim CN As ADODB.Connection
    Dim RS As ADODB.Recordset
    Set CN = CurrentProject.Connection
    Set RS = New ADODB.Recordset
    RS.Open "T社員名簿", CN, adOpenKeyset, adLockOptimistic
    Do Until RS.EOF
        RS("年齢") = RS("年齢") + 1
        RS.Update
        RS.MoveNext
    Loop
    RS.Close: CN.Close
    Set RS = Nothing: Set CN = Nothing
End Sub

f:id:ray88:20201125233428p:plain
【フィールドオブジェクトの参照方法】
以下の様に様々な記述方法がある。Valueプロパティは省略可。

RS![フィールド名].Value
RS.Fields("フィールド名").Value
RS("フィールド名").Value
RS.Fields(n).value (nは0から始まるインデックス番号)
RS(n).Value (nは0から始まるインデックス番号)

【レコード更新時のLockTypeプロパティの設定】
■レコードの更新・追加・削除操作を行う際はLockTypeプロパティに「adLockOptimistic」等の更新可能なロックタイプを指定する必要がある。
■LockTypeプロパティの設定方法
 ①Openメソッドの引数で設定する
 ②LockTypeプロパティにあらかじめ設定する
 ※メソッドの引数を省略した場合はあらかじめオブジェクトに設定されているプロパティの値が引き継がれる。