Uso conjunto de transacciones y Buffer: código de ejemplo

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.