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