Error de escritura...

.:Gaby:.
19 de Septiembre del 2002
Tengo unas rutinas q agregan un registro en blanco a una tabla temporal... y guardan el valor en la tabla real... El problema es que al parecer, casi al final del ingreso de estos registros... se me presenta un error de escritura .. a veces en el indice meses.cdx... o a veces en la tabla.... meses.dbf...
La verdad es que estoy bien confundida...
Cuando reviso la tabla hay varios registros en blanco..
¿que puedo hacer?

fjuri
19 de Septiembre del 2002
gaby, yo progame muchos años en clipper y posteriormente migre a VFP, para esto cree unas rutinas para agregar registros y modificar registros. NO PUDE ORDENARLOS, SI TIENES ALGUN PROBLEMA ME MANDAS UN CORREO.

adjunto esta rutinas para que la pruebes, debes llamarlas como fincion ya que retorna verdadero o falso.

*--------------------
* Bloquea un Registro
* nReg = N° de registro
* cAlias = Alias
*--------------------
Function RegLck(nReg,cAlias)
Local lExito, nInd
cAlias = iif(Empty(cAlias),Alias(),cAlias)
lExito = .F.
Do While Not lExito
If Not Isrlocked() and Not Isflocked()
lExito = Rlock()
endif
If Not lExito
If Messagebox("El registro "+cAlias+"."+Alltrim(Str(nReg))+" sigue ocupado por otro usuario",(5+48+0),'Bloqueo de Registro') = 2
Messagebox("El proceso ha sido abortado...",(0+64+0),'Bloqueo de Registro')
Exit
Endif
Endif
Enddo
Return( lExito )

*-----------------------------
* Agrega un registro en blanco
*-----------------------------
Function AppBlk(cAlias)
Local lExito, nInd, cActual
cAlias = iif(Empty(cAlias),Alias(),cAlias)
cActual = Alias()
lExito = .F.
Do While Not lExito
If Not Isflocked(cAlias)
Select &cAlias
Append Blank
Unlock
Select &cActual
lExito = .T.
Endif
If Not lExito
If Messagebox(cAlias+" : Continúa ocupada por otro usuario",(5+48+0),'Bloqueo de Tabla') = 2
Messagebox("El proceso ha sido abortado...",(0+64+0),'Agregar registro')
Exit
Endif
Endif
Enddo
Return( iif(lExito,.T.,.F.) )

*-------------------
* Borrar un registro
*-------------------
Function DelReg(nReg,cAlias)
Local lExito, nInd, cActual
cAlias = iif(Empty(cAlias),Alias(),cAlias)
cActual = Alias()
lExito = .F.
Do While Not lExito
If Not Isrlocked(nReg,cAlias) and Not Isflocked(cAlias)
Select &cAlias
if rlock()
Delete
Unlock
lRec = .f.
lExito = .T.
endif
Select &cActual
Endif
If Not lExito
If Messagebox("El registro "+cAlias+"."+Alltrim(Str(nReg))+" sigue ocupado por otro usuario",(5+48+0),'Eliminación de Registro') = 2
Messagebox("El proceso ha sido abortado...",(0+64+0),'Eliminación de Registro')
Exit
Endif
Endif
Enddo
Return( lExito )


vicente
19 de Septiembre del 2002
deberias probar primero guarda los datos en una matriz y luego agregar de dicha matriz, aunque si tu dices que es una tabla temporal es muy dificil por lo que dichas tablas son de lectura solamente