FoxPro/Visual FoxPro - dbf-txt-dbf

 
Vista:

dbf-txt-dbf

Publicado por German L.S. (7 intervenciones) el 20/09/2005 07:13:18
Saludos a toda la comunidad.. espeo y me puedan ayudar.. tengo la necesitad en un proyecto en el cual estoy trabajando.. en transportar datos de una tabla en visual(dbf) y hacer un archivo .txt o bien .dat para continuar trabahando estos datos en una terminal para inventarios.. despues estos datos trasladarlos de .txt o .dat a una dbf de visual.. para continuar con el trabajo de proceso de datos.. espero y exista alguien que pueda ayudarme.... de antemano 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:dbf-txt-dbf

Publicado por Pedro L. (9 intervenciones) el 23/09/2005 13:47:59
Hola German:

Normalmente lo que uso para hacer lo que estas preguntando es una rutina, metodo o funcion que lea el DBF y lo grabe en TXT. Un ejemplo seria este:

1. Guardo en una propiedad del form que estoy usando los campos que quiero exportar
THISFORM.cotros = 'fields cgoCategoria, nomCategoria, precio'

1.1 Si deseas hacer un filtro de los datos a importar podes usar otra propiedad que contenga las condiciones de exportacion, sino la dejas de esta manera:
thisform.condicion = .t.

2. Despues coloco un boton que el usuario deberia presionar para comenzar la exportacion que contiene el siguiente codigo.
nomfile = putfile('Nombre de documento','','txt')
if !empty(nomfile)
wait wind "Exportando a Texto..." nowait
programa = 'copy to "' + nomfile + '" delimited for ' + thisform.condicion + ' ' + thisform.cotros
&programa
wait clear
if file(nomfile)
if messagebox('Se ha exportado a texto satisfactoriamente' + chr(13) + 'Desea ver el documento generado?',292,'Reportes') = 6
DECLARE INTEGER ShellExecute IN SHELL32.DLL INTEGER nWinHandle, STRING cOperation, STRING cFileName, STRING cParameters, STRING cDirectory, INTEGER nShowWindow
ShellExecute(0,"open",nomfile,"","",1)
endif
else
messagebox('No se ha podido exportar a texto',48,'Error')
endif
endif

Con esto estaria solucionado el 1º punto
--------------------------------------

Para hacer el proceso inverso debes mantener los criterios de importacion,es decir;

1. caracter separador
2. formato de grabado
3. campos a importar

El codigo para hacerlo seria algo asi:

THISFORM.nomfile = "nombre_archivo_a_importar"
IF !EMPTY(THISFORM.nomfile)
nfile = FOPEN(THISFORM.nomfile)
IF nfile > 0
SET COMPATIBLE ON
todo = ALLTRIM(FREAD(nfile,FSIZE(THISFORM.nomfile)))
SET COMPATIBLE OFF
=FCLOSE(nfile)

*** ACA DEBERIAS HACER LOS CONTROLES NECESARIOS PARA CORROBORAR QUE SE IMPORTO EL ARCHIVO CORRECTO. EN ESTE EJEMPLO ESTOY CONTROLANDO QUE EXISTAN 3 CAMPOS INDISPENSABLES

IF AT("CUIT",todo) = 0 .OR. AT("DENOMINACION",todo) = 0 .OR. AT("CBU",todo) = 0
MESSAGEBOX("El archivo seleccionado no es el correcto.", 48, THISFORM.CAPTION)
THISFORM.nomfile = ""
ENDIF
ELSE
MESSAGEBOX("Error al leer archivos RG1934", 48, "Error")
THISFORM.nomfile = ""
ENDIF
ENDIF

*** A partir de aca estas seguro que es el archivo que necesitas y tenes todo el contenido del mismo en memoria por lo que podes recorrerlo a gusto y cargar los campos de la DBF con los valores del TXT.

Espero te haya servido la ayuda, sino mandame un e-mail que vemos que problemas tenes

Saludos

Pedro R. Larrosa
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:dbf-txt-dbf

Publicado por Holger Macias (1 intervención) el 07/12/2007 23:07:28
Esta super chevere y funcional la primera funcion pero la segunda no entiendo en que parte graba en la base de datos

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