Los archivos de ancho fijo se pueden importar directo a un dbf usando append from xx type sdf"
pero es complicado crear el cursor o mantenerlo si es muy largo como es tu caso.
*---------------------------------
* Marco Plaza, 2012
* crea una tabla util para importar archivos de ancho fijo
* indicando el ancho de cada columna separado por comas
* ej _sdf2cursor('miarchivo.sdf',"2,10,25,38")
* posdeCorte:
* suministrar una lista de posiciones de corte
* ej _sdf2cursor('miarchivo.sdf','2,12,37,75',.t.)
*---------------------------------
parameter txtFile,listacsv,posdeCorte
try
local desde,lc,tt,coma,v1,l,oerror
listacsv = m.listacsv+','
desde = 1
oerror = .f.
lc = 'create cursor '+sys(2015)+' ( '
tt = 1
do while .t.
coma = at(',',m.listacsv)
if m.Coma = 0
exit
endif
v1 = val( left( m.listacsv , m.Coma-1 ) )
listacsv = substr(m.listacsv,m.Coma+1,1000)
if m.posDeCorte
l = m.v1-m.desde
desde = m.desde+m.l
else
l = m.v1
endif
lc =
m.lc+' C'+trans(
m.tt)+' C('+trans(m.l)+') ,'
tt =
m.tt+1
enddo
lc =
m.lc+')'
lc = strtran(
m.lc,',)',')')
&lc
append from (m.txtFile) sdf
catch to oerror
endtry
if vartype(m.oerror) = 'O'
error oerror.message
else
return alias()
endif