Tengo el siguiente codigo para hacer una transaccion.
TRY
.oCnn.Open()
liTransaccion = .oCnn.BeginTrans()
&&Secuencia
UPDATE RsSecuencia SET iSecuencia = iSecuencia + 1
&&Insert Nuevo periodo
INSERT INTO RsPeriodoNew (iPeriodoId, cYear, cMonth, nQuincena,
iIdUserAdd) VALUES (tiPeriodoNew, tcYear, tcMonth, 1, tiIdUserAdd)
&&Pagos
INSERT INTO RsPagoNew (iIdPeriodo, iIdEmpleado, cIdConcepto);
Values(tiPeriodoNew, liEmpleadoId, lcIdConcepto)
SELECT RsSecuencia
llAnswer = TABLEUPDATE(.T., .F., 'RsSecuencia')
Go (Recno())
SELECT RsPeriodoNew
llAnswer = TABLEUPDATE(.T., .F., 'RsPeriodoNew')
Go (Recno())
SELECT RsPagoNew
llAnswer = TABLEUPDATE(.T., .F., 'RsPagoNew')
Go (Recno())
.oCnn.CommitTrans()
CATCH TO loException
IF liTransaccion > 0
.oCnn.RollbackTrans()
ENDIF
llAnswer = .F.
.Errorregistra(loException)
FINALLY
IF .oCnn.State > 0
.oCnn.Close()
ENDIF
ENDTRY
RETURN llAnswer
ENDWITH
la tabla secuencias no se actualizaba por un campo nulo pero el resto de
tablas si, el valor de retorno era verdadero
-Como puedo hacer una transaccion segura?. ya que el CAD me devuelve .t.
actualize o no
-Supongo que en la version 9.0 es bug del CAD esta areglado.
VFP 8.0 Sp1 WPro 2000 Sp 4 y Sql Server, mdac 2.8
Saludos.
Mauricio Pulla
Leer las respuestas