FoxPro/Visual FoxPro - abrir y cerrar transaccion

 
Vista:

abrir y cerrar transaccion

Publicado por Gabriela (7 intervenciones) el 18/06/2008 22:06:46
*Una consulta , estoy manejando las transacciones manuales, las configuro al inicio de mi programa con

*= SQLSETPROP(mconect, 'Transactions', 2), para según los cambios confirmarlos con Sqlcommit() o cancelarlos con sqlrollback()

*Mi consulta son dos:

*1.0 al configurar al inicio el tipo de transaccion manual, tengo que en algun momento volverlo a su estado inicial, como tipo de transacciones automaticas(implicitas)

*2.0 para x proceso ejecuto consecutivamente 2 sqlexec(), distintos,tendria que abrir la transaccion y al final cerrarla para que los dos sqlexec queden dentro de la
*misma transaccion??

WAIT WINDOW "Agregando información de la tabla principal" TIMEOUT 2
BEGIN TRANSACTION
MSQL = "INSERT INTO mitablappal";
+" (CODIGO,FECHA,IDCLIENT)";
+" VALUES";
+" (?CURSOR.cod_orden,?CURSOR.FECHA,?CURSOR.ID)"
IF SQLEXEC(MCONECT,MSQL)<0
MESSAGEBOX("NO SE PUDO REALIZAR LA ADICION DEL REGISTRO",64,"PRG")
SQLROLLBACK(mconect)
ELSE
&&&Actualizamos correlativo en sql, LE MANDAMOS EL PARAMETRO A SQL
=SQLEXEC(mconect,"exec incremento_CORRELATIVO_FACTURA @VALORORDEN=?WCORRELATI")
SQLCOMMIT(mconect)
endif
END TRANSACTION

* ????ESTOY EN LO CORRECTO????O SI ESTOY EQUIVOCADA POR FAVOR DIGAMNE¡¡¡GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:abrir y cerrar transaccion

Publicado por Marvin Emilson Pineda (81 intervenciones) el 18/06/2008 22:22:23
ah!!!... respuestas

1.- no es necesario que la vuelvas a su valor original ya que el modo de transaccion manual solo sera aplicado a la conexión a la cual se aplica.

2- el comando Begin Transaction solo aplica para tablas locales de VFP asi que no es necesario aplicar esas dos lineas en tu codigo ya que son inapicables.

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:abrir y cerrar transaccion

Publicado por Gabriela (7 intervenciones) el 18/06/2008 22:50:22
Y entonces, como me aseguro que si se me ejecuta el primer sql exec y todo bien, pero luego al procesarse el segundo sqlexec ocurre un fallo por a o b motivo????y se necesita que se ejecuten los dos sqlexec y no solo uno¡¡¡¡si me pudieras ayudar con esta duda por favor Marvin¡¡
atte Gabriela
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:abrir y cerrar transaccion

Publicado por Marvin Emilson Pineda (81 intervenciones) el 18/06/2008 23:25:45
asi como tienes tu codigo esta bien

If SQLEXEC(oConnect, lcSQL1) > 0 and SQLEXEC(oConnect, lcSQL2) > 0 and SQLCOMMIT(oConnect) > 0 then
Wait Window "Registros actualizados" Nowait
else
= SQLROLLBACK(oConnect)
Wait Window "Error al intentar actualizar tablas" NoWait
endif

asi si todas se cumplen hasta el commit() se confirma al usuario que todo se archivo de lo contrario se aplica el Rollback para que todo se revierta

Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:abrir y cerrar transaccion

Publicado por Gabriela (7 intervenciones) el 18/06/2008 23:59:55
La version 9.0 Marvin¡¡¡¡¡muchas gracias por tu rapidez¡¡¡¡
Muy amable de tu parte
Besos atte Gabriela
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar