Page 1 of 1

Error DBFCDX/2037 Read error: Read Failed;In Function: GetD

Posted: Fri Nov 04, 2005 8:18 am
by MANOLO
Hola a todos, estoy modificando una función para actualizar los ficheros desde una dbf con _ definidos, todo funciona perfecto, pero cuando llega a copiar un registro con un campo memo con datos me refleja el error del asunto, abajo dejo el código que refleja el error , gracias por ayudarme.

Static Function fitraspa(cfichtrab, aFichstru,ccamino )
local nSeletrab, nSeleant, lActual := .f., nCont, nSust, xValor,;
aSelect := {'AUX'}, CTEMP:="",ASUST:={},cdriver:=DBSetDriver(),oFtrab:="TMPTRAB",NSYS:=0,oftemp:="TMPINI"

IF File(Ccamino+"temptras.dbf")
FErase(Ccamino+"temptras.dbf")
FErase(ccamino+"temptras.fpt")
ENDIF

DBCreate(cCamino+"temptras.dbf",aFichstru)

sysrefresh()

DBUseArea(.T.,,ccamino+"temptras.dbf",oftrab,.F.,.f.)

IF Select(oftrab) <> 0
nseletrab:=select()

DBUseArea(.T.,,cCamino+cfichtrab,OFTEMP,.f.,.F.)
(OFTEMP)->(DBGOTOP())
nseleant:=select(OFTEMP)
While !(NSELEANT)->(eof())
oWnd:oMsgbar:cMsgdef:="Fichero "+cFichtrab+" Actualizando Registro.."+Str(RecNo(),9)+" de "+Str(LastRec(),9)
ownd:oMsgbar:paint()
NSYS++
IF NSYS = 100
Sysrefresh()
NSYS = 0
ENDIF

(nSeletrab)->(dbappend())
for nCont := 1 to (OFTEMP)->(FCount())
if (nSeleant)->(fieldget(fieldpos((nSeletrab)->(fieldname(nCont)))))=Nil
nSust := ascan(aSust,{|aVal| AllTrim(aVal[1])==AllTrim((nSeletrab)->(fieldname(nCont)))})
if nSust#0
if valtype(aSust[nSust,2])='B'
xValor := eval(aSust[nSust,2])
(nSeletrab)->(fieldput(nCont,xValor))
else
(nSeletrab)->(fieldput(nCont,aSust[nSust,2]))
endif
endif
else
(nSeletrab)->(fieldput(nCont,;
(nSeleant)->(fieldget(fieldpos((nSeletrab)->(fieldname(nCont)))))))
endif
next
(NSELEANT)->(dbskip())
enddo
lActual := .t.

(nSeleant)->(dbclosearea())
if file(Ccamino+cFichtrab+'.ANT')
ferase(Ccamino+cFichtrab+'.ANT')
endif

(nSeletrab)->(dbclosearea())

IF frename((Ccamino+cFichtrab+'.DBF'), (Ccamino+cFichtrab+'.ANT')) == -1
MSGALERT("Imposible renombrar fichero..."+CcAMINO+CFICHTRAB+".DBF")
RETURN .F.
ENDIF

IF FRename((Ccamino+"temptras.dbf"),(ccamino+cfichtrab+".dbf")) == -1
Msgalert("Imposible renombrar fichero... Temptras.dbf")
RETURN .F.
ENDIF

endif
(nSeletrab)->(dbclosearea())

Return lActual

y el error que me genera es el siguiente:

Error DBFCDX/2037 Read error: Read Failed;In Function: GetDataLen;On Line: 581

lo da en la linea que he marcado en rojo

Posted: Fri Nov 04, 2005 8:54 am
by Antonio Linares
Manolo,

Estás usando harbour ó xharbour ? que build ?

Posted: Fri Nov 04, 2005 12:07 pm
by MANOLO
hola antonio, estoy usando Clipper 53 blink 6.0 y fw25.


Gracias.