Page 1 of 1

APPEND FROM (rutaf) DELIMITED WITH ";"

Posted: Mon Feb 19, 2007 10:15 pm
by leandro
Amigos del foro....

Resulta y pasa que tengo que convertir un archivo txt a una dbf lo estoy haciendo de la siguiente manera:

Code: Select all


  rutaf:=LFN2SFN(ruta)
  USE (oLamcla:tSube) ALIAS tSube NEW EXCLUSIVE
  ZAP
  dbgotop()
  APPEND FROM (rutaf) DELIMITED WITH ";"
  dbgotop()

El problema es que no vale el WITH ";" no valida el punto y coma, solo recibe lo que este delimitado por comas ",".

Alguien me puede indicar por que sucede esto, o que debo hacer para que si tome el valor de punto y coma ";".

De antemano gracias

Posted: Tue Feb 20, 2007 4:06 am
by Rochinha
Amigo

Use SET DEMILITER TO ";" no cabecalho do programa e veja se funciona.

Noppp

Posted: Tue Feb 20, 2007 7:37 pm
by leandro
Nop :(

Rochinha:

No me funciono... de todas formas muchas gracias por la respuesta.

Un abrazo.

Posted: Wed Feb 21, 2007 12:19 am
by Rochinha
OK

Try

Code: Select all

APPEND FROM (rutaf) DELIMITED WITH chr(59)

Posted: Wed Feb 21, 2007 4:17 am
by Manuel Valdenebro
Amigo Leandro,

Yo lo hago de la siguiente forma:

1) Creo un fichero temporal, con un solo campo (muy grande)
DbCreate( "tFichero.dbf",{ {"NOMBRE", "C", 256, 0} } )

2) Hago el Append From a este fichero temporal :
USE tFichero new EXCLUSIVE
APPE FROM (cFichero) SDF
DBGOTOP()

3) Abro el fichero definitivo y voy copiando la información desde el fichero temporal al definitivo, usando la claúsula SUBSTRING para cada uno de _.

definitivo->NOMBRE:= SUBS(tFichero->NOMBRE, 1, 24)

Gracias...

Posted: Wed Feb 21, 2007 4:54 pm
by leandro
Rochinha de Nuevo gracias por tu respuesta hice el intento pero no funca..

jejeje

Manuel.. muchas gracias por tu respuesta creo que es lo que voy a hacer... voy a dejar la pereza y montar la rutina... De paso te hago una preguntica... ¿Como detecto si hay un tab ?, en caso que el archivo no venga separado por ";" si no por "tab"? Valga la rebusnancia.

y de Nuevo gracias por la ayuda.

Posted: Wed Feb 21, 2007 5:24 pm
by jacgsoft
Solo se acepta como delimitador la COMA "," , asi que para otro tipo de caracter delimitador diferente a la COMA"," solo te queda crear una funcion para leer tu archivo que contenga otro tipo de delimitadores, no hay otra.


Jaime

Posted: Wed Feb 21, 2007 5:27 pm
by Manuel Valdenebro
Amigo Leandro,

Cuando al mandato APPEND FROM le añade la claúsula SDF los registros y _ tienen una longitud fija. De esa forma, es facil saber donde empieza cada campo y donde termina.

Posted: Wed Feb 21, 2007 10:35 pm
by Rochinha
No me do por vencido.

Amigo usa la solucion de Manuel Valdenebro para cada linha del fichero.

Usa mi funcion em http://www.pctoledo.com.br/forum/viewtopic.php?t=5306 asi:

aArrayObtido := StringToArray( "O|Rochinha|es|tu|amigo", ";" )

Resultado:

? aArrayObtido[1] // Mostra O
? aArrayObtido[2] // Mostra Rochinha
? aArrayObtido[3] // Mostra Es
? aArrayObtido[4] // Mostra Tu
? aArrayObtido[5] // Mostra Amigo

Fica por tu conta ahora.

Posted: Thu Feb 22, 2007 3:53 am
by jose_murugosa
Rochinha,

Excelente función, verdaderamente combinándola con la idea de Manuel se logra un "append from" cualquier cosa, sin bases intermedias y con excelente desempeño!!!

Posted: Thu Feb 22, 2007 4:38 am
by Rochinha
Obrigado Jose, no podemos vencer sempre, mas lutar sempre!

Gracias....

Posted: Thu Feb 22, 2007 3:53 pm
by leandro
Muchas Gracias Rochinha, de verdad que me uno a las felicitaciones de jose excelente funcion, problema solucionado......

De nuevo Muchas Gracias