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