Convertir un archivo de texto a una tabla de VFP

06/10/2004 - 20:45 por Luciano Robert | Informe spam
Hola compañeros del Foro:

Necesito realizar un programa que convierta un archivo de
texto (.txt) a una tabla (.dbf). El formato del archivo de
texto es el siguiente:

Número material Cent Fe.mod. TpMa Clase mat UM GrC ABC CP
ClVa Prc Prec. Mon. por Texto breve Autor
|21 C006 10.03.04 HAWA 2603 PZA ND 2602 V 10.00 MXN
|VALE DE GASOLINA DENOMINACION $20.00
JRAMIREZ
|22 C006 10.03.04 HAWA 2603 PZA ND 2602 V 10.00 MXN
|VALE DE GASOLINA DENOMINACION $ 50.00
JRAMIREZ
|61 C006 02.02.04 HAWA 2101 PZA ND 2101 V 15.00 MXN
|BASE ACRILICA PARA CALENDARIO
CARGAS_MM

Lo que deseo es obtener una tabla asi:

Numero UM Partida Precio Texto Breve
21 PZA 2602 10.00 VALE DE GASOLINA DENOMINACION $20
22 PZA 2602 10.00 VALE DE GASOLINA DENOMINACION $50
61 PZA 2101 15.00 BASE ACRILICA PARA CALENDARIO

He tratado de hacer una importación del archivo de texto a
una tabla de Visual Fox Pro, pero no es posible definir
las columnas, y los datos aparecen desordenados.

Agradeceria cualquier comentario de cómo atacar el
problema, cualquier documentación que pudieran facilitarme.

Muchas Gracias por su tiempo y atencion prestada
Atte.
Luciano Robert

Preguntas similare

Leer las respuestas

#1 Heberto Villavicencio
07/10/2004 - 01:52 | Informe spam
Si la posicion de los datos es constante prueba cargando el archivo a
memoria (no mas de 16mb) con la funcion filetostr, luego puedes recorrer el
archivo e ir extrayendo los datos necesarios, tambien puedes revisar la
documentacion de fopen y fread, em cualquiera de los casos tendras que hacer
una rutina que extraiga los datos necesarios ya que no podras exportarlo de
forma directa con VFP

"Luciano Robert" escribió en el mensaje
news:174b01c4abd4$9b358950$
Hola compañeros del Foro:

Necesito realizar un programa que convierta un archivo de
texto (.txt) a una tabla (.dbf). El formato del archivo de
texto es el siguiente:

Número material Cent Fe.mod. TpMa Clase mat UM GrC ABC CP
ClVa Prc Prec. Mon. por Texto breve Autor
|21 C006 10.03.04 HAWA 2603 PZA ND 2602 V 10.00 MXN
|VALE DE GASOLINA DENOMINACION $20.00
JRAMIREZ
|22 C006 10.03.04 HAWA 2603 PZA ND 2602 V 10.00 MXN
|VALE DE GASOLINA DENOMINACION $ 50.00
JRAMIREZ
|61 C006 02.02.04 HAWA 2101 PZA ND 2101 V 15.00 MXN
|BASE ACRILICA PARA CALENDARIO
CARGAS_MM

Lo que deseo es obtener una tabla asi:

Numero UM Partida Precio Texto Breve
21 PZA 2602 10.00 VALE DE GASOLINA DENOMINACION $20
22 PZA 2602 10.00 VALE DE GASOLINA DENOMINACION $50
61 PZA 2101 15.00 BASE ACRILICA PARA CALENDARIO

He tratado de hacer una importación del archivo de texto a
una tabla de Visual Fox Pro, pero no es posible definir
las columnas, y los datos aparecen desordenados.

Agradeceria cualquier comentario de cómo atacar el
problema, cualquier documentación que pudieran facilitarme.

Muchas Gracias por su tiempo y atencion prestada
Atte.
Luciano Robert
Respuesta Responder a este mensaje
#2 Pedro José Hernández Muñoz
07/10/2004 - 08:50 | Informe spam
Hola
También puedes utilizar el driver ODBC para archivos de texto TXT y CSV. Su
utilización sería algo así como:

1-Para este ejemplo utilicé la tabla Categories de la base de datos
Northwind, creando un archivo de texto delimitado por tabuladores mediante:
COPY TO categories.txt DELIMITED WITH tab

2-Crea un archivo SCHEMA.INI en la carpeta que especifique la estructura del
archivo TXT que vas a importar. Se puede hacer desde el Administrador de
orígenes de datos ODBC, que puedes ejecutar desde VFP con:
RUN /N "C:\WINDOWS\system32\odbcad32.exe"
El archivo SCHEMA.INI almacena las propiedades de conexión y estructura de
los archivos de texto que se vayan a abrir mediante el driver ODBC de
archivos de texto. Su funcionamiento es análogo a los archivos .INI , con lo
que se puede utilizar el API ( funciones WritePrivateProfileString y
GetPrivateProfileString ) para escribir en el archivo y recuperar sus
valores. El contenido final para el archivo categories.txt sería algo asi
como:
[categories.txt]

ColNameHeader=False

Format=TabDelimited

MaxScanRows

CharacterSet=OEM

Col1ñ Integer

Col2ò Char Width 255

Col3ó Char Width 255

3-Puedes utilizar la siguiente cadena de conexión para abrir el archivo de
texto mediante el driver ODBC:
cconexion = "DefaultDir="+JUSTPATH(cArchivo)+";Driver={Microsoft Text Driver
(*.txt; *.csv)}"+;

";DriverId';FIL=text;MaxBufferSize 48;MaxScanRows=8;PageTimeout=5;"+;

"SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

Es muy importante que en DefaultDir se especifique la carpeta donde esta el
archivo TXT actualmente.

4-Abrir una conexión utilizando esta cadena de conexion:
nHandle = SQLSTRINGCONNECT(cConexion)

5-Por último generar un cursor local que recupera el contenido del archivo
de texto:

nFilas = SQLEXEC(nHandle,cSelect,"Cursor_Texto")



El código completo del programa de ejemplo es el siguiente:

*-

* Abre la tabla y genera el archivo de texto

*-

USE HOME()+"samplesorthwind\categories"

COPY TO d:\borrame\categories.txt DELIMITED WITH TAB

*--

* Archivo de texto

*--

cArchivo = "D:\BORRAME\CATEGORIES.TXT"

*-

* Cadena de conexión

*-

cconexion = "DefaultDir="+JUSTPATH(cArchivo)+";Driver={Microsoft Text Driver
(*.txt; *.csv)}"+;

";DriverId';FIL=text;MaxBufferSize 48;MaxScanRows=8;PageTimeout=5;"+;

"SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"

*-

* Handle de conexión

*-

nHandle = SQLSTRINGCONNECT(cConexion)

*

* Consulta

*

cSelect = "SELECT * FROM "+cArchivo

*--

* Ejecuta la consulta

*--

nFilas = SQLEXEC(nHandle,cSelect,"Cursor_Texto")

*-

* Contenido del archivo SCHEMA.INI:

*-

* [categories.txt]

* ColNameHeader=False

* Format=TabDelimited

* MaxScanRows

* CharacterSet=OEM

* Col1ñ Integer

* Col2ò Char Width 255

* Col3ó Char Width 255



Pedro José Hernández Muñoz

blog: http://pedrohdz.blogspot.com/
atom: http://pedrohdz.blogspot.com/atom.xml
"Luciano Robert" escribió en el mensaje
news:174b01c4abd4$9b358950$
Hola compañeros del Foro:

Necesito realizar un programa que convierta un archivo de
texto (.txt) a una tabla (.dbf). El formato del archivo de
texto es el siguiente:

Número material Cent Fe.mod. TpMa Clase mat UM GrC ABC CP
ClVa Prc Prec. Mon. por Texto breve Autor
|21 C006 10.03.04 HAWA 2603 PZA ND 2602 V 10.00 MXN
|VALE DE GASOLINA DENOMINACION $20.00
JRAMIREZ
|22 C006 10.03.04 HAWA 2603 PZA ND 2602 V 10.00 MXN
|VALE DE GASOLINA DENOMINACION $ 50.00
JRAMIREZ
|61 C006 02.02.04 HAWA 2101 PZA ND 2101 V 15.00 MXN
|BASE ACRILICA PARA CALENDARIO
CARGAS_MM

Lo que deseo es obtener una tabla asi:

Numero UM Partida Precio Texto Breve
21 PZA 2602 10.00 VALE DE GASOLINA DENOMINACION $20
22 PZA 2602 10.00 VALE DE GASOLINA DENOMINACION $50
61 PZA 2101 15.00 BASE ACRILICA PARA CALENDARIO

He tratado de hacer una importación del archivo de texto a
una tabla de Visual Fox Pro, pero no es posible definir
las columnas, y los datos aparecen desordenados.

Agradeceria cualquier comentario de cómo atacar el
problema, cualquier documentación que pudieran facilitarme.

Muchas Gracias por su tiempo y atencion prestada
Atte.
Luciano Robert
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida