ADO 2


レコードの追加

レコードセットにデータを追加する場合は AddNew を使います。

Public Sub Add()
Dim rs As New ADODB.Recordset
     
    rs.Open "社員テーブル", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    
    rs.AddNew "名前", "新入社員"
    
    rs.Close
End Sub

レコードの更新

AddNew の引数を省略した場合、レコードセットが更新されてもデータが反映されません。この場合は Update後 Requery を使います。

Public Sub Add()
Dim rs As New ADODB.Recordset
     
    rs.Open "社員テーブル", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    
    rs.AddNew
    rs!名前 = "新入社員"
    rs.Update
    rs.Requery

    rs.Close
End Sub

レコードの更新の取消し

Update でレコードセットが更新される前ならば、Cancel Updateでレコードの編集・追加を取り消すことができます。

Public Sub Cancel()
Dim rs As New ADODB.Recordset
     
    rs.Open "社員テーブル", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    
    rs.AddNew
    rs!名前 = "新入社員"
    MsgBox rs![名前]

    rs.CancelUpdate
    
    MsgBox "入力の取り消し"
    
    rs.Update
    
    rs.Close
End Sub

レコード更新後に更新前のデータを取得する

レコードセットが更新された後に OriginalValue を使って更新前のデータを取得することができます。

Public Sub Add_1()
Dim rs As New ADODB.Recordset
     
    rs.Open "社員テーブル", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    
    rs.AddNew
    rs!名前 = "新入社員"
    MsgBox rs![名前]&"を追加しました"

    rs!名前 = "一年目社員"
    
    MsgBox rs![名前]&"に変更しました"
    
    rs.Update
    
    rs.Close
End Sub

カレントレコードの位置を取得する

Bookmark を利用して前のレコードに戻ります。

Public Sub Find()
    Dim rs As New ADODB.Recordset
    Dim bMark As Variant
    Dim sName As String
    
    rs.Open "社員テーブル", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    
    sName = InputBox("名前を入力して下さい")
    rs.Find "[名前]='" & sName & "'"
    
    bMark = rs.Bookmark  'ブックマークを付ける
    
    MsgBox rs![名前] & "に移動しました"

    sName = InputBox("名前を入力して下さい")
    rs.Find "[名前]='" & sName & "'"

    MsgBox rs![名前] & "に移動しました"
    MsgBox "前のレコードに移動します"
    
    rs.Bookmark = bMark
    MsgBox rs![名前] & "に移動しました"
    
    rs.Close
End Sub