PRB: RollbackTrans Does Not Undo Changes to ADO Recordset (192717)



The information in this article applies to:

  • ActiveX Data Objects (ADO) 1.5
  • ActiveX Data Objects (ADO) 2.0
  • ActiveX Data Objects (ADO) 2.1 SP2
  • ActiveX Data Objects (ADO) 2.5
  • ActiveX Data Objects (ADO) 2.6
  • ActiveX Data Objects (ADO) 2.7
  • Microsoft Visual Basic Professional Edition for Windows 5.0
  • Microsoft Visual Basic Professional Edition for Windows 6.0
  • Microsoft Visual Basic Enterprise Edition for Windows 5.0
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Studio, Enterprise Edition 6.0
  • Microsoft Visual Studio 97

This article was previously published under Q192717

SYMPTOMS

Calling a RollbackTrans on an ActiveX Data Objects (ADO) connection object does not undo the changes made to a client-side ADO recordset object that uses that connection.

STATUS

This behavior is by design.

MORE INFORMATION

The easiest way to revert your recordset is to persist the recordset in the desired state using the Save method that was introduced in ADO version 2.0. For example:
   rsAuthors.CursorLocation = adUseClient
   rsAuthors.Open "SELECT Au_ID, Au_LName FROM Authors", cnPubs, _
                  adOpenStatic, adLockBatchOptimistic, adCmdText
   rsAuthors.Save strPath
   cnPubs.BeginTrans
   rsAuthors!Au_LName = InputBox("Enter a new last name")
   rsAuthors.Update
   rsAuthors.UpdateBatch
   cnPubs.RollbackTrans
   rsAuthors.Open Source:=strPath, LockType:=adLockBatchOptimistic, _
                  Options:=adCmdFile
   Set rsAuthors.ActiveConnection = Nothing
   Set rsAuthors.ActiveConnection = cnPubs
				
Another possible solution is to use the Resync or Requery commands on the recordset object to retrieve the most up to date information from the database.

Modification Type:MinorLast Reviewed:8/12/2005
Keywords:kbprb KB192717