append from

append from

Postby surGom » Mon Jun 23, 2014 1: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: Select all  Expand view
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: Select all  Expand view
 
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
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: append from

Postby karinha » Mon Jun 23, 2014 2:07 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: append from

Postby surGom » Mon Jun 23, 2014 2:54 pm

Gracias karinha lo implemente


Code: Select all  Expand view

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
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm

Re: append from

Postby karinha » Mon Jun 23, 2014 3:01 pm

Se detectó corrupción

Intente asi:

Code: Select all  Expand view

   use padroncf EXCLUSIVE NEW
   zap
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: append from

Postby karinha » Mon Jun 23, 2014 3:12 pm

Ejemplo:

Code: Select all  Expand view

   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
User avatar
karinha
 
Posts: 7214
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: append from

Postby cmsoft » 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: Select all  Expand view

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: Select all  Expand view
APPEND FROM (cArchivo) SDF
User avatar
cmsoft
 
Posts: 1189
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: append from SOLUCIONADO

Postby surGom » 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
surGom
 
Posts: 639
Joined: Wed Oct 19, 2005 12:03 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 84 guests