FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour append from
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
append from
Posted: Mon Jun 23, 2014 01:47 PM
Hola mi consulta es la siguiente, tengo unos archivos (de rentas pcia y capital) en txt y necesito pasarlos a dbf. Lo tengo solucionado gracias a un integrante de la lista de fivewin Carlos Vargas desde hace años, resuelto en visual fox pro. Que básicamente utiliza append from y en máximo 10 segundos los pasa a dbf. En su momento quise hacerlo y no pude, las soluciones que busqué fueron lentísimas. Estamos hablando de txt de entre 70 mega a 120 megas.

Les muestro los primeros renglones de un de ellos

24122010;01012011;31032011;20002729874;D;S;N;3,00;3,00;00;00;MOURI¦O GUILLERMO ANTONIO
24122010;01012011;31032011;20002733227;D;S;N;3,00;3,00;00;00;CASTRO EUGENIO LEONARDO
24122010;01012011;31032011;20002734118;D;S;N;3,00;3,00;00;00;BOGGIO RICARDO RAIMUNDO
24122010;01012011;31032011;20002734134;D;S;N;3,00;3,00;00;00;LAVORANO GERARDO TITO


Para el caso creo una base de datos con 12 campos

en visual fox pro se hace

Code (fw): Select all Collapse
APPEND FROM (cArchivo) DELIMITED WITH CHARACTER ";"


en harbour como hago para que funcione ya hice varias pruebas y no logre hacerlo me da el siguiente error

Error description: Error DBCMD/1005 Error de argumento: __DBAPP

Stack Calls
===========
Called from: => __DBAPP( 0 )
Called from: source\rdd\dbdelim.prg => __DBDELIM( 0 )
Called from: origen.prg => LEO( 691 )

una de las pruebas que hice fue encontrada en internet

Code (fw): Select all Collapse
  
cDefEol := SET( _SET_EOL, chr( 13 ) ) 
APPEND FROM ( cArchivo ) DELIMITED WITH PIPE
APPEND FROM ( cArchivo ) DELIMITED WITH ( { "|","|" } ) 
SET( _SET_EOL, cDefEol )


le cambié | por , y ; tambuién me dió el mismo error



Muchas Gracias
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: append from
Posted: Mon Jun 23, 2014 02:07 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Re: append from
Posted: Mon Jun 23, 2014 02:54 PM
Gracias karinha lo implemente


Code (fw): Select all Collapse
local cArchivo := cGetfile( "archivo(*.txt) |*.txt|", "Seleccionar archivo" )
use padroncf
zap

SET DELIMITER ON 
SET DELIMITERS TO ";" 
//cDefEol := SET( _SET_EOL, chr( 13 ) )
APPEND FROM ( cArchivo )  

//SET( _SET_EOL, cDefEol )  
 

SET DELIMITERS TO 
SET DELIMITER OFF

DBCloseArea()
return nil




y ahora me da el error

Error description: Error DBFCDX/1012 Se detectó corrupción: E:\fivehme\dgrentas\Padron_alto_riesgo_primertrim_2011.txt

Stack Calls
===========
Called from: => __DBAPP( 0 )
Called from: origen.prg => LEO( 693 )


Achiqué el tamaño del archivo deje solamente 30 renglones , cambiando ";" por "," que por defecto según tengo entendido lo lee clipper o harbour, y me da el mismo error de corrupción. Le cambié el nombre "Padron_alto_riesgo_primertrim_2011.txt" por "padron.txt" y lo mismo ????

Aclaro que se baja un zip y se descomprime y lo que aquí no se lee en la rutina de visual fox pro sin problemas se ejecuta

luis
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: append from
Posted: Mon Jun 23, 2014 03:01 PM
Se detectó corrupción

Intente asi:

Code (fw): Select all Collapse
   use padroncf EXCLUSIVE NEW
   zap
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: append from
Posted: Mon Jun 23, 2014 03:12 PM
Ejemplo:

Code (fw): Select all Collapse
   USE Sales EXCLUSIVE NEW

   IF !NETERR()
      SET INDEX TO Sales, Branch, Salesman
      __dbZAP()
      CLOSE Sales
   ELSE
      ? "Zap operation failed"
      BREAK
   ENDIF


Saludos
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 1344
Joined: Wed Nov 16, 2005 09:14 PM
Re: append from
Posted: Mon Jun 23, 2014 10:22 PM
Yo lo solucione de esta forma, no se si sera muy elegante pero funciona bien.
Creo una tabla con el formato de los campos y de los puntos y coma ;
Ejemplo para tu caso: 24122010;01012011;31032011;20002729874;D;S;N;3,00;3,00;00;00;MOURI¦O GUILLERMO ANTONIO
Code (fw): Select all Collapse
CAMPO1 C 8
PYC1 C 1
CAMPO2 C 8
PYC2 C 1
...

.... Y asi con todos los campos
Luego uso la siguiente instucción:
Code (fw): Select all Collapse
APPEND FROM (cArchivo) SDF
Posts: 652
Joined: Wed Oct 19, 2005 12:03 PM
Re: append from SOLUCIONADO
Posted: Mon Jun 23, 2014 10:56 PM

Cmsoft Tu solución funcionó perfecto y en solo 6 segundos muchísimas gracias.
Muchas Gracias también a Karinha, hice los cambios que sugirío pero me seguía dando corrupción del archivo txt.

Ahora voy a poder utilizar en los tres casos que necesito usar esos txt sin necesidad de llamar a una función externa

Luis

Continue the discussion