Clunietp
Jan 5th, 2000, 01:32 AM
You would use begintrans and rollback when you are making multiple changes to the database. (multiple EDIT --> UPDATEs)
When you only need to make a single change, use .EDIT, and use .CANCELUPDATE when you need to cancel changes, or update to commit them.
Example using DAO:
'declare objects
Dim db As Database
Dim rs As Recordset
'get db/rs
Set db = DBEngine.OpenDatabase("Nwind.mdb")
Set rs = db.OpenRecordset("Select * from Customers")
'BEGIN TRANSACTION
DBEngine.BeginTrans
'SHOW YOU THE INITIAL VALUE
MsgBox rs.Fields(1).Value
'ASSIGN NEW NAME TO FIELD
rs.Edit
rs.Fields(1).Value = "NewName"
rs.Update
'SHOWS YOU THAT THE UPDATE WAS SUCCESSFUL
MsgBox rs.Fields(1).Value
'CANCEL ALL CHANGES SINCE BEGINTRANS
'EVEN THOUGH WE UPDATED SUCCESSFULLY
DBEngine.Rollback
'DISPLAY INITIAL VALUE
'NOTICE THAT IT IS BACK TO
'WHAT WE STARTED WITH
MsgBox rs.Fields(1).Value
When you only need to make a single change, use .EDIT, and use .CANCELUPDATE when you need to cancel changes, or update to commit them.
Example using DAO:
'declare objects
Dim db As Database
Dim rs As Recordset
'get db/rs
Set db = DBEngine.OpenDatabase("Nwind.mdb")
Set rs = db.OpenRecordset("Select * from Customers")
'BEGIN TRANSACTION
DBEngine.BeginTrans
'SHOW YOU THE INITIAL VALUE
MsgBox rs.Fields(1).Value
'ASSIGN NEW NAME TO FIELD
rs.Edit
rs.Fields(1).Value = "NewName"
rs.Update
'SHOWS YOU THAT THE UPDATE WAS SUCCESSFUL
MsgBox rs.Fields(1).Value
'CANCEL ALL CHANGES SINCE BEGINTRANS
'EVEN THOUGH WE UPDATED SUCCESSFULLY
DBEngine.Rollback
'DISPLAY INITIAL VALUE
'NOTICE THAT IT IS BACK TO
'WHAT WE STARTED WITH
MsgBox rs.Fields(1).Value