Hola amigo, felicitaciones por el código
José Luis Carranza pero creo que es demasiado código no critico solo doy mi punto de vista, ahora con lo que necesitas
Percy Villano Fuentes. tienes que iniciar una transacción desde VFP de la siguiente manera.
Botón guardar
= SQLSETPROP(cn, 'Transactions', 2)
nError = -1
------Aqui insertas el la cabecera
nError = SQLExec("código para que ingreses cliente")
if nError > 0
significa que se ingreso correctamente el cliente
nError=SQLExec(CN,"TucodigoSQL")
endif
if nError>0
significa que hizo bien la inserción
ahora vamos al detalle
nError=SQLExec(CN,"TucodigoSQLDE de detalle")
dentro del detalle puedes crear un trigger que agrega los artículos al kardex, actualiza tus existencia porque estarías aprovechando todo los datos
endif
if nError>0
si todo va muy bien terminas la tracción
SQLCOMMIT(cn)
= SQLSETPROP(cn, 'Transactions', 1)
else
si la variable nError < 0 significa que en alguna de los insert into y incluso en el trigger haya fallado revierte la transacción y ninguna tabla queda afectado.
SQLROLLBACK(cn)
= SQLSETPROP(cn, 'Transactions', 1)
endif
Se puede hacer muchas cosas utilizando el trigger te ahorras código y ademas pienso yo que es mas transparente el código.
Saludos;
Ing. Russvell Jesus Soto Gamarra
Framework Multi-conexion version 6.0 (nueva)