|
Question : Rolling back transactions in Access (using ADO, DAO, Access code, whatever)
|
|
I'm a SQL programmer, fairly new to Access...
I have an Access database that I created a form in, within the form, I want to run several action queries (to insert data, update data, and delete other data) over a series of 4 queries. If any of them fail, I need to roll them all back. I thought the ability to rollback would be inherent to Access 2000 but apparently not.
I tried to use ADO since I am familiar with that, but two problems: 1. ADO asks for the path of the file - that is really redundant since I am IN the database that I want to interact with, but I provided it the path anyway. 2. When I try to open the database that I am ALREADY IN, it tells me that (80004005) "database has been placed in a state that prevents it from being open or locked"
Should I be using DAO? Is there a better way to connect using ADO? Can I use functions and calls inherent to VBA or A2000 that will allow rollbacks.
Thanks for your time.
Paul
|
|
Answer : Rolling back transactions in Access (using ADO, DAO, Access code, whatever)
|
|
DAO makes it very simple ...
Public Function TRANS()
Dim blnTrans As Boolean Dim ws As DAO.Workspace
On Error GoTo ERR_TRANS
Set ws = DBEngine(0)
ws.BeginTrans blnTrans = True DBEngine(0)(0).Execute ...blah your SQL, dbFailOnError DBEngine(0)(0).Execute ...blah your SQL, dbFailOnError DBEngine(0)(0).Execute ...blah your SQL, dbFailOnError ws.Committrans
EXIT_TRANS: Set ws = Nothing Exit Function ERR_TRANS If blnTrans = True Then ws.Rollback End If Resume EXIT_TRANS End Function
Steve
|
|
|
|