In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Transacciones

Foro de Xailer profesional en español
Responder
Arvisnet
Mensajes: 43
Registrado: Jue Nov 12, 2015 5:44 am

Transacciones

Mensaje 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.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5705
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Re: Transacciones

Mensaje 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.
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder