Gracias por contestar, pero no encuentro nada que me ayude.
El caso es que tengo un codigo que hace lo siguiente
- Code: Select all Expand view
...
// Ahora hay que añadir las líneas de detalle
SELECT TERMINAL
GOTO TOP
DO WHILE !TERMINAL->(EOF())
...
// Bloqueamos el registro y lo añadimos al fichero de albaranes
If !MkBloqReg("TERMINAL")
AvisarTmp( oTerminal:oDialg, "NO SE PUEDE ACCEDER A LA LINEA SELECCIONADA" + CRLF + ;
"OTRO USUARIO TIENE BLOQUEADO EL REGISTRO",,1 )
SemUnLock( nSmf )
oTerminal:lProcesando := .F.
Select(nAreaActual)
return .f.
EndIf
SELECT LVENTAS
If !AddRec()
MkEnlaLVta(DLIBERAR)
SemUnLock( nSmf )
oTerminal:lProcesando := .F.
return .f.
EndIf
GrabarCmp( "CODALM", TERMINAL->CODALM, "LVENTAS" )
GrabarCmp( "NUMALB", cNumAlbCtdo, "LVENTAS" )
GrabarCmp( "ENLACE", cEnlace, "LVENTAS" )
GrabarCmp( "FECALB", dFecAlbCtdo, "LVENTAS" )
GrabarCmp( "CODCLI", TERMINAL->CODCLI, "LVENTAS" )
GrabarCmp( "TPUVEN", TERMINAL->TPUVEN, "LVENTAS" )
MkEnlaLVta(DLIBERAR)
UnbloqReg("LVENTAS")
SELECT TERMINAL
GrabarCmp( "ESTADO", "L", "TERMINAL")
ENDIF
SELECT TERMINAL
If oEntorno:lBorTerm
If lHayDatos
SELECT TERMINAL
DELETE
EndIf
EndIF
UnbloqReg("TERMINAL")
SKIP
ENDDO
El caso es que los datos que se encuentran en el fichero de terminal se copian en otro fichero que se llama LVENTAS, y aleaotriamente se produce un error y NO aparece una de las lineas que se tienen que grabar en el fichero de datos, cuando esto se produce, algunos de los indices de LVENTAS, que tendría que tener los datos, tiene claves duplicadas en algunos de los TAGS (es como si se hubiese agregado con los datos del registro siguiente)
Es decir si selecciono el fichero y activo el indice incorrecto me aparece
DOS VECES el mismo registro, sin embargo en otro de los indices no aparece directamente.
Este es el estado del area despues de producirse el error.
Area 14 => LVENTAS [X:\CLIENTES\DISTEA\DATOS\LVENTAS.DBF]
Indices: [X:\CLIENTES\DISTEA\DATOS\LVENTAS.CDX]
==> [LVENTAS1] NUMALB FOR !DELETED()[ 22903]
[LVENTAS2] ENLACE FOR !DELETED()[ 22904]
[LVENTAS3] CODCLI+NUMALB FOR !DELETED()[ 22903]
[LVENTAS4] CODART FOR !DELETED()[ 22904]
[LVENTAS5] DTOS(FECALB) FOR !DELETED()[ 22903]
[LVENTAS6] CODCLI+ CODART+DTOS(FECALB) FOR !DELETED()[ 22904]
[LVENTAS7] CODART+STR(DESCEND(FECALB),10) FOR !DELETED()[ 22904]
Reg. 19096 de 22903
Bloqueos: (0)
Los índices LVENTAS2, LVENTAS4, LVENTAS6 Y LVENTAS7 tienen una clave mas que el fichero de datos (no hay registros borrados) y esa clave apunta dos veces al mismo registro.
Yo nunca habia visto esto, estoy perdido.
Gracias