Se me bloquea en una transacción
Publicado por CyRuS (127 intervenciones) el 23/11/2007 16:29:27
Tengo un problema bastante gordo con una transacción. El caso es que yo tengo el siguiente código más o menos:
BeginTrans
' un montón de operaciones vendrían aquí, las cuales usan: dim db as
'DAO.Database y rs as DAO.Recordset
tran = MsgBox("¿Desea realizar los cambios?", vbYesNo + vbQuestion)
If tran = vbNo Then
Rollback
MsgBox "Ha cancelado la acción"
Else
CommitTrans
End If
El problema que tengo es que cuando por cualquier cosa algo no va bien, es como si se me bloqueara toda la base de datos. Porque a partir de ese momento no puedo ejecutar de nuevo este mismo código. Sólo se soluciona si salgo del Access, este compacta, y genera un error con un db1.mdb. Entiendo que el Access resetea la transacción o simplemente borra lo que tenga en la memoria.
He probado a poner:
On Error GoTo tratarError
tratarError:
db.Close: db = Nothing
rs.Close: rs = Nothing
Rollback
incluso he puesto estas líneas en el caso de que tran = vbNo . Pero nada de nada. O una de 2. O elimino la transacción (no es una opción demasiado buena) o salgo de access para que genere un error.
Grandes sabios. ¿ cómo puedo solucionarlo ? , ¿ No existe alguna función en la que pueda "resetear" esa transacción ?
Agradecería mucho vuestra ayuda.
BeginTrans
' un montón de operaciones vendrían aquí, las cuales usan: dim db as
'DAO.Database y rs as DAO.Recordset
tran = MsgBox("¿Desea realizar los cambios?", vbYesNo + vbQuestion)
If tran = vbNo Then
Rollback
MsgBox "Ha cancelado la acción"
Else
CommitTrans
End If
El problema que tengo es que cuando por cualquier cosa algo no va bien, es como si se me bloqueara toda la base de datos. Porque a partir de ese momento no puedo ejecutar de nuevo este mismo código. Sólo se soluciona si salgo del Access, este compacta, y genera un error con un db1.mdb. Entiendo que el Access resetea la transacción o simplemente borra lo que tenga en la memoria.
He probado a poner:
On Error GoTo tratarError
tratarError:
db.Close: db = Nothing
rs.Close: rs = Nothing
Rollback
incluso he puesto estas líneas en el caso de que tran = vbNo . Pero nada de nada. O una de 2. O elimino la transacción (no es una opción demasiado buena) o salgo de access para que genere un error.
Grandes sabios. ¿ cómo puedo solucionarlo ? , ¿ No existe alguna función en la que pueda "resetear" esa transacción ?
Agradecería mucho vuestra ayuda.
Valora esta pregunta
0