Transacciones
Publicado: Jue Sep 23, 2021 7:35 pm
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.
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.