Cita:
Empezado por mizzard
Hola, hasta donde tengo entendido eso es para poder realizar varios cambios con ADOCommand como si fuera uno único y si alguno de ellos da error, se cancelan todos. Para ello se sigue la siguiente estructura:
Código:
frmPrincipal->DBConnectionTiMesDB->BeginTrans();
try{
strSQL = "UPDATE Digitalizado SET FechaOut = " + fecha + ", HoraOut= " + hora + " WHERE Id= " + frmPrincipal->DBtxtContador->Caption;
frmPrincipal->cmdTiMes->CommandText = strSQL;
frmPrincipal->cmdTiMes->Execute();
// Restamos las fechas para calcular el tiempo de proceso
resultadoProceso = restarFechas();
// Metemos el resultado en la base de datos
strSQL = "UPDATE Digitalizado SET TiempoTotal = " + resultadoProceso + " WHERE Id= " + frmPrincipal->DBtxtContador->Caption;
frmPrincipal->cmdTiMes->CommandText = strSQL;
frmPrincipal->cmdTiMes->Execute();
frmPrincipal->DBConnectionTiMesDB->CommitTrans();
}
catch(...){
frmPrincipal->DBConnectionTiMesDB->RollbackTrans();
}
Yo lo que quisiera es mediante un boton cancelar la operación realizada (y se supone que exitosa).
Otra duda que me surge es como probar si el rollbackTrans que he implementado funciona o no. He probado a provocar un error en el segundo command (cambiando un TiempoTotal por TiemoTotal) y me salta un error en access pero no salta el catch ni se activa el rollback.
Ideas??
Muchas gracias y un abrazo!
|
Si que funciona el rollback en este código, que al probarlo en modo debug no se ve, pero cuando se prueba el ejecutable si que funciona.
Lo que no consigo es deshacer el último cambio por boton de deshacer...