Tengo una rutina para actualizar una tabla principal y una de detalles en
sql server a través de cursor adapter y me sucede que algunas veces falla al
tomar la última inserción me pone en la tabla secundaria la clave siguiente,
puede ser que al insertar simultánemante desde 2 máquinas diferentes la
segunda sea más rápida y al efectuar el select @@Identity la clave principal
ha cambiado, paso la parte del código que utilizo.
Gracias.
LOCAL ok as Boolean
ok=.f.
SELECT ivacomp
lnResult = SQLSetProp(nHandle,"TRANSACTIONS",2)
ok=TABLEUPDATE(.T.)
IF ok=.F.
®RROR(lerror)
SQLRollback(nHandle)
ms="2-"+lerror(1,3)
ELSE
IF llnuevo=.t.
=SQLEXEC(nHandle,"select @@Identity as Identy","identi")
lnId=Identi.Identy
USE IN Identi
SELECT compras
REPLACE ALL compras.IdIvacomp WITH lnId
ENDIF
SELECT compras
ok=TABLEUPDATE(.T.)
IF ok=.F.
®RROR(lerror)
SQLRollback(nHandle)
ms="2-"+lerror(1,3)
ELSE
SQLCommit(nHandle)
ms="1-Actualizacion correcta"
ENDIF
ENDIF
lnResult = SQLSetProp(nHandle,"TRANSACTIONS",1)
Leer las respuestas