Página 1 de 1

Transacciones

Publicado: Jue Sep 23, 2021 7:35 pm
por Arvisnet
Buenos dias a todos:
tengo una duda a ver si me pueden apoyar, como se debe hacer un proceso de transaccion, roll back dentro de xailer?
yo hago esto, no se si sea correcto, pero no hace el roll back..

Tengo 2 Sqlquerys, el principal donde capturo los datos de la requisicion y el de la sucural, donde actualiza el consecutivo. (lo hago asi porque tengo un consecutivo por tienda)

BEGIN SEQUENCE
AppData:oMyDs:BeginTrans()

IF AppData:lNew //solo cuando es nuevo
// actualizo el folio de le requisicion
cCons := Appdata:oMyDs:Query( "Select * From Sucursal Where idtienda = '" + AppData:cTienda + "' and empresa='" + appdata:empresa + "'" )
cCons:open()
IF cCons:RecCount() > 0

cCons:FastEdit()
cCons:NumRequis += 1
:numrequis := cCons:NumRequis
cCons:FastUpdate()
cCons:Close()

ENDIF //reccount >0

ENDIF //Si es Nuevo..

:Update() //actualiza los datos capturados en tabla requisicion

AppData:oMyDs:CommitTrans()
//Llamo la impresion del retiro
::ImprimeReq()

//Catch
RECOVER
Appdata:oMyDs:RollBAckTrans()
Msginfo( "Error de Grabación, proceso abortado." + CRLF + Appdata:oMyDs:cLastError )
END

espero alguien me de un norte
saludos y gracias.

Re: Transacciones

Publicado: Lun Sep 27, 2021 10:20 am
por jfgimenez
Hola,

en principio, la estructura del código es correcta:

Código: Seleccionar todo

BEGIN SEQUENCE
   ...:BeginTrans()
   ...
   ...:CommitTrans()
RECOVER
   ...:RollbackTrans()
END SEQUENCE
Podrías comprobar qué está pasando usando el debugger y ejecutando paso a paso.