One of the many functional methods of rolling back transaction(s) in a VB application is as follows:
1) In the procedure containing the Begintrans/CommitTrans methods, declare a Boolean Procedural variable (Flag) in the procedure containing the Begintrans/CommitTrans methods.
2) Declare the On Error statement at the beginning of the procedure
3) Create a generic On Error routine
4) Immediately after the BeginTrans call, set the Flag to true
5) Immediately after the CommitTrans call, set the flag to false
6) Check the status of the flag in the Error Routine and call RollbackTrans if it’s set to true
Here’s a code sample:
Private Sub RollbackTransTest(pCn as ADODB.Connection) Dim bIncompleteTrans As Boolean On Error GoTo Routine_Error bIncompleteTrans = False ' ' ' pCn.BeginTrans bIncompleteTrans = True ' Create/Update/Delete data ' Create/Update/Delete data ' etc. pCn.CommitTrans bIncompleteTrans = False ' ' 'Routine_Exit: Exit SubRoutine_Error: If bIncompleteTrans = True Then pCn.RollbackTrans Err.Raise Err.Number, Err.Source, Err.DescriptionEnd Sub