FoxPro/Visual FoxPro - Rutina SET DEVICE

 
Vista:

Rutina SET DEVICE

Publicado por jorge (4 intervenciones) el 30/11/2010 15:51:08
Tengo un problema que ojala me puedan ayudar
Mediante una rutina paso algunos datos de una tabla a un TXT pero no utilizando COPY TO , sino

SET DEVICE TO FILE archivo.txt
DO WHILE...
SKIP
ENDDO

El archivo de texto que se crea es, aparentemente, igual al que se crearia si utlizara SET COPY TO archivo.txt TYPE SDF

Pero al pasar esos datos a otra tabla con:

APPEND FROM miarchivo.txt TYPE SDF, en la tabla se desordenan los campos sobre todo el de fecha.

Leyendo la ayuda me dice que un archivo SDF (Formato de Datos de Sistema) es un archivo de texto ASCII en el cual los registros tienen una longitud fija y terminan con un retorno de carro y un avance de línea. Los campos no están delimitados.
Creo que la diferencia radica en "retorno de carro y un avance de línea".
La pregunta concreta es si alguien tiene idea de como crear ese TXT para poder pasarlo a una tabla.
Desde ya Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Rutina SET DEVICE

Publicado por xx (378 intervenciones) el 30/11/2010 20:28:08
El secreto esta en la estructura y el orden de los campos de tu tabla original o sea la que usas para generar tu TXT, deberias aclararnos porque necesitas hacer esta conversion : DBF->TXT->DBF porque no simplemente DBF->DBF, ahora si se trata de algo especifico bueno te cuento que no tiene que ver los LF+CR mas bien cuando tu creas un archivo TXT esta tiene una linea que puede contener uno o mas campos que debe coincidir exactamente con tu tabla que sera la de destino es decir:

DBF -> TXT -> DBF
TABLA1 TEXT1.TXT TABLA2
Nro,Nombres Nro,Nombres
c(3),c(7) c(3),c(7)
======================================
001NOMBRE1 -> 001NOMBRE1 ->001NOMBRE1
002NOMBRE2 -> 002NOMBRE2 ->001NOMBRE1
003NOMBRE3 -> 003NOMBRE3 ->001NOMBRE1
...
O sea deben tener la misma estructura y orden de los campos para que te asimile exactamente igual

Si no es lo que buscas pues te recomendaria que uses funciones de bajo nivel para lectura/escribura de archivos ej: FOPEN(),FGETS(), FREAD(), FCLOSE() etc.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SET DEVICE

Publicado por jorge  (4 intervenciones) el 01/12/2010 13:03:31
Gracias por responder, te cuento que la tabla sobre la cual hago el APPEND FROM, en efecto tiene una extructura acorde. Tanto es asi que si el TXT lo creo con COPY TO al importarlo no tengo problemas. No asi con SET DEVICE TO FILE. Muchas Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Rutina SET DEVICE

Publicado por xx (378 intervenciones) el 01/12/2010 13:20:53
Upppps entonces si tiene que ver con los CR+LF, deberiamos ver como generas tu bucle por ejemplo si lo haces con @SAY creo que este te agrega los CR+LF al final siempre y cuando las filas las envies ordenadamente, si lo haces con ??? deberias enviar al final de cada linea CHR(13)+CHR(10), el tema es facil de abres el archivo de texto con algun editor de texto o hexadecimanl y lo verificas si tu archivo no esta separado por linea (es decir te sale todo en una linea laaaarga) es que le falta el CR+LF, pero para estar seguro deberias postear tu codigo o bucle:

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar