Duda con transacciones en vfp

hola juan quisiera que me saques de duda si la programación que estoy haciendo esta bien o puede traer problemas y en ese caso darme un ejemplo del uso de transacciones para un sistema que funcionara en red. A que se refiere el manual de vfp cuando dice que soporta hasta 5 transacciones anidadas? Estoy violando eso?

aquí va mi código con transacciones>:

hay_error=.F.
 BEGIN TRANSACTION 
 IF TABLEUPDATE(1,.F.,"ids")
     IF TABLEUPDATE(1,.F.,"solicita_presupuesto")
         IF TABLEUPDATE(1,.F.,"detalle_presupuesto")
             IF TABLEUPDATE(1,.F.,"detalle_caja")
                 IF TABLEUPDATE(1,.F.,"articulos")
                     IF TABLEUPDATE(1,.F.,"ingresos")
                         IF TABLEUPDATE(1,.F.,"nuevos")
                             END TRANSACTION 
                         ELSE
                             ROLLBACK
                             hay_error=.T.
                         ENDIF 
                     ELSE 
                         ROLLBACK
                         hay_error=.T.
                     ENDIF 
                ELSE 
                     ROLLBACK
                     hay_error=.T.
                 ENDIF 
             ELSE
                 ROLLBACK
                 hay_error=.T.
             ENDIF 
         ELSE
             ROLLBACK
             hay_error=.T.
         ENDIF 
    ELSE
         ROLLBACK
         hay_error=.T.
     ENDIF 
ELSE
     ROLLBACK 
     hay_error=.T.
 ENDIF 
 IF hay_error
     TABLEREVERT(.T.,"ids")
     TABLEREVERT(.T.,"solicita_presupuesto")
     TABLEREVERT(.T.,"detalle_presupuesto")    
     TABLEREVERT(.T.,"detalle_caja")
     TABLEREVERT(.T.,"articulos")
     TABLEREVERT(.T.,"ingresos")
     TABLEREVERT(.T.,"nuevos")
     MESSAGEBOX("Algunos datos del presupuesto no se guardaron correctamente, por favor vuelva a intentarlo",0+16,"PRESUPUESTO NO ALMACENADO")
 ELSE
    "otro codigo"
endif 

1 Respuesta

Respuesta
1

En primera instancia revisaría si mi buffer para cada tabla de las que intervienen en esta transacción esta correctamente clasificado, en las pripoedades de cada una de ellas, y sobre todo que sean de las mismas características la tabla padre y las tablas hijos.

En segundo lugar no dejaría la misma variable hay_error vomo validadora de toda la transacción, reduerda, yo colocaría varias variables de hay_error1, hay_error2, ay_error4...

Prueba modificar tu código y me avisas

Coloque una sola variable hay_error por que si en la transacción una de las tablas , cualquiera sea de ellas no se almacenó correctamente que vuelva atrás con rollback y me limpie el buffer de todas las tablas que se modificaron hasta ese momento con el tablerevert(.T.)

como hago para revisar que el buffer de cada tabla este bien clasificado o para saber cual tabla no se guardo correctamente y que registros?

Revisa en las propiedades de cada table, lo puedes hacer mediante la ventana del proyecto de vfp entrendo a la base de datos, en caso de que no la uses (base de datos) deberás hacerlo por código mediante la función buggering desplegada en la ayuda general de vfp

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas