Click to See Complete Forum and Search --> : Problem with BeginTrans / CommitTrans / RollbackTrans


Sharathms
July 31st, 2001, 08:57 AM
Hi,
i have some problem using transactions (i am using adox). This works great. But locks-up tables. After a succussfull CommitTrans, even after rebooting the system, i cannot
1. deleted the table
2. Create a new field
(through code of course).
i get the message
"The database engine couldn't lock table 'activity' because it's already in use by another person or process."
If i comment all the transaction code, i can do everything!.
please help!
thanks
Sharath

Cimperiali
July 31st, 2001, 09:31 AM
Beware: you cannot have nested transactions (was this the case?)

Special thanks to Lothar "the Great" Haensler, Tom Archer, Chris Eastwood,
Bruno Paris and all the other wonderful people who made and make Codeguru
a great place.
Come back soon, you Gurus.

The Rater

Sharathms
July 31st, 2001, 09:48 AM
Thanks. but i dont think so.
The code flow goes something like this.

(My connection object is a modular object in the class.BeginTrans and RollbackTrans are in two precedures!)
CreateOrOpen(strDatabase file), (which has mconAdoConnection.BeginTrans)
Trow up a progress bar with a cancel button
CreateTables (with basic fields)
Iterate through the collection of classes
Get each object in the collection
Iterate through the properties, same time check for the field in the table.
'This class is user customisable and user can add his own properties into this class)
Create the field if it does not exists!
Update Table
mconAdoConnection.CommitTrans


Meanwhile, i also check of the user has cancelled, if so i will call
mconAdoConnection.RollbackTrans


And finaly i have
mconAdoConnection.Close

Thanks a lot,
Sharath

phunkydude
July 31st, 2001, 11:12 AM
Are you catching all errors i.e. is the begintrans ALWAYS matched with a commit or rollback.