Ver Mensaje Individual
  #4  
Antiguo 19-12-2011
mizzard mizzard is offline
Miembro
NULL
 
Registrado: feb 2011
Posts: 100
Reputación: 14
mizzard Va por buen camino
Cita:
Empezado por mizzard Ver Mensaje
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...
Responder Con Cita