FoxPro/Visual FoxPro - BEGIN TRANSACCTION

   
Vista:

BEGIN TRANSACCTION

Publicado por Gabriel Sánchez (112 intervenciones) el 29/10/2007 20:52:18
Hola amigos: Tengo un problema con una transacción.
Es la primera vez que estoy utilizando una transacción.

tengo dos consultas: cSql y cSql2 que se van a ejecutar según el valor del tag de mi formulario.

El problema se da en el caso de 'N' (Nuevo)
CUANDO LA PRIMERA CONDICION ES VERDADERA; SE REALIZA LA ACTUALIZACIÓN EN LA BASE DE DATOS DEL SQLSERVER (tabla1)
A PESAR DE QUE OCURRE UN ERROR EN LA SEGUNDA CONSULTA cSql2.(tabla2)

lError = 0
BEGIN TRANSACTION && Inicio de la Transaccion
IF thisform.Tag = 'N' && Nuevo
if variable = 'valorx' && Primera condición
cSql = 'UPDATE TABLA1'
IF SQLEXEC(vCnx, cSql) = -1
lError = AERROR(Mierror)
=SQLROLLBACK(vCnx)
MESSAGEBOX(Mierror(2),48,'ERROR')
thisform.cancelar
RETURN .F.
ENDIF
endif
cSql2 = 'INSERT INTO tabla2'
ELSE
cSql2 = 'UPDATE TABLA2'
ENDIF

IF SQLEXEC(vCnx, cSql2) = -1
lError = AERROR(Mierror)
=SQLROLLBACK(vCnx)
MESSAGEBOX(Mierror(2),48,'ERROR')
thisform.cancelar
RETURN .F.
ENDIF

IF lError # 0
=SQLROLLBACK(vCnx)
=MESSAGEBOX('Ocurrieron errores',48,'ERROR')
thisform.cancelar
RETURN .F.
ELSE
=SQLCOMMIT(vCnx)
=MESSAGEBOX('El registro se realizó con éxito',64,'Permisos')
ENDIF
END TRANSACTION

:. Además en algunos momentos me sale un error(BEGIN TRANSACTION command failed. Nesting level is too deep.)

QUIZÁ ESTE COMETIENDO ALGÚN ERROR EN LA FORMA DE UTILIZAR EL BEGIN TRANSACCTION.
Les estaré muy agradecido por su ayuda.
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