Page 1 of 1

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

Posted: Fri Nov 04, 2005 12:08 pm
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.

uso fw25, clipper53 y blink 6.0

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: Sat Nov 05, 2005 7:28 am
by Antonio Linares
No se ve ninguna línea en rojo...

Posted: Sun Nov 06, 2005 10:21 am
by MANOLO
me da el error en esta linea:



if (nSeleant)->(fieldget(fieldpos((nSeletrab)->(fieldname(nCont)))))=Nil



Gracias.
Manolo

Posted: Sun Nov 06, 2005 10:49 am
by Antonio Linares
Manolo,

Que versión de Clipper usas ?

Posted: Mon Nov 07, 2005 8:28 am
by MANOLO
hola antonio el clipper que utilizo es el

Clipper 53b rev. 338


Saludos