Por Francisco San Pablo
© Copyrights 1998 by FoxPress, All rights reserved
FoxPress, Febrero 1998
Usar conjuntamente transacciones y buffer, forma una poderosa sociedad que puede hacer la vida al diseñador menos complicada.
A continuación muestro un código de ejemplos
BEGIN TRANSACTION
**********************************
* Prueba si puede actualizar en
* tabla padre
**********************************
IF TABLEUPDATE(0, .F., Orders)
**********************************
* Tabla padre se actualizó
* correctamente, prueba
* si puede actualizar tabla hija
**********************************
IF TABLEUPDATE(2, .F., OrdItems)
**********************************
* Tabla hija se actualiza
* correctamente, finaliza
* la transacción
**********************************
END TRANSACTION
WAIT WINDOW ;
"Cambios salvados" TIMEOUT 1
ELSE
**********************************
* Problemas actualizando el hijo,
* pero el padre
* ya está actualizado
*********************************
= AERROR(aErrorArray)
CR = CHR(13)
cMsg = "Actualizando la tabla hija
"+;
"ha ocurrido un error."+CR+CR+ ;
"Error: "+aErrorArray(1)+CR+CR+;
aErrorArray(2)
nType = MB_ICONINFORMATION+MB_OK
cTitle = "Problemas con ;
actualización!"
*********************************
* Descarta todos los cambios
*********************************
ROLLBACK
=MESSAGEBOX(cMsg,nType,cTitle)
ENDIF
ELSE
**********************************
* Problemas actualizando tabla padre
**********************************
= AERROR(aErrorArray)
CR = CHR(13)
cMsg = "Actualizando tabla ;
padre, "+;
"ha ocurrido un error.;
"+CR+CR+ ;
"Error: "+aErrorArray(1);
+CR+CR+;
aErrorArray(2)
nType = MB_ICONINFORMATION+MB_OK
cTitle = "Problemas con ;
actualización!"
**********************************
* Descarta los cambios
**********************************
ROLLBACK
=MESSAGEBOX(cMsg,nType,cTitle)
ENDIF
Espero que os sirva.