Problemas con append from

Hola 
trate de pasar un archivo txt a una tabla de visual fox, los datos los pasa bien, pero cada que corro el formulario donde tengo el código me duplica los registros que tengo en el txt.
por ejemplo en mi txt original tengo 10 registros la primera vez que corro el programa para pasarlos a la tabla de fox me pone los mismos 10, pero la segunda vez que corro el formulario en mi dbf me aparecen 20 registros osea los mismos 10 duplicados y así sucesivamente.
como corrijo esto? Espero me puedas ayudar

1 Respuesta

Respuesta
1
Debe ser que el código que hace la importación del txt a la tabla está dentro de un evento que se ejecuta cada vez que abres el formulario, en el "Init" o "Load" por ejemplo, por lo cual es natural que en la tabla se dupliquen los registros, pues se vuelve a ejecutar el "IMPORT".
Si no quieres que lo anterior suceda, debes mover el código a otro evento o método, dependiendo de en qué momento quieres que se haga el "IMPORT", así como si se debe hacer sólo una vez o más veces. Explícame un poco más lo que necesitas y tal vez te pueda dar solución más acertada.
antes que nada gracias por tu tiempo en ayudarme, te explico lo que estoy haciendo:
Quiero hacer un formulario que cargue primeramente un archivo en excel, csv o txt lo que sea mas fácil de manejar, en el cual se tienen que hacer unas validaciones (comparaciones entre columnas del mismo libro y comparaciones con otro libro), entonces mi idea fue poner uno grids en el formulario para ahí mostrar lo archivos cargados.
como no siempre son los mismos archivos y no siempre están la mima ruta fue que intente poner un botón para de ahí irlo buscando en mi pc en tiempo de ejecución. 
también en tiempo de ejecución necesito hacer estas comparaciones y entonces columnas extras en el grid en donde de acuerdo a la comparación vaya poniendo las observaciones y a su vez que me guarde estos cambios de nuevo en un archivo.
lo único que he logrado es cargar los archivos en el grid pero ya de ahí no se como hacer las comparaciones.
nota* las comparaciones son entre registros por ejemplo ver si A5 es igual a D5, osea ver si el cantidad inicial es igual a la cantidad final, etc 
nota* el archivo original lo tengo en txt pero si es mas fácil cargarlo en excel o cvs no hay problema
saludos...

A ver ya no entendí bien. El problema era con el "APPEND FROM", pero ahora me comentas otra cosa, ya no sé bien cuál es.
Respecto a lo del "APPEND FROM", según lo que entiendo que quieres hacer, la mejor opción es hacerlo con un botón, como mencionas, no al abrir el formulario. Entonces, el archivo txt se pasaría a la tabla hasta que le den click al botón. Podrías poner dos botones, uno para cada txt, e incluso podrías deshabilitar el botón ya después que se seleccionó el archivo para que no le vuelvan a dar click, y evitar que se duplique la información.
De lo de la comparación, eso es algo aparte, creo que debería ir en otra pregunta si es que tienes duda con eso, pero pienso que para eso, deberías tener dos tablas iguales, una para cada archivo. Después de llenarlas con la información de los archivos, y ya después comparar la tabla 1 con la tabla 2.

hola

perdón creo que te confundí, mi mayor problema es el siguiente:

correr mi formulario

cargar un archivo excel, txt o csv

hacer consultas SQL al archivo cargado

guardar modificaciones

como mencionaba ya logro cargar el archivo y visualizarlo en el grid eso lo hice con un getfile, lo que me falta es poder hacer las consultas al archivo cargado, leí que tenia que hacerlo con un append from para que me convirtiera el archivo en dbf, pero soy nuevo en vfp y no se como utilizar el append from o si sea con otro comando.

ojala pudieras pasarme un pedacito de código para darme una idea. 

o en el peor de los casos como pasar (fuera de ejecución) el archivo excel o txt a una tabla dbf y ya en ejecución cargar la dbf

saludos...

Sí ya logras cargar el archivo y visualizarlo en el Grid, entonces ya lo debes haber pasado a dbf. Entonces ya nada más te faltaría hacer las comparaciones y guardar las modificaciones, ¿cierto?
Podrías agregarle un nuevo campo a la tabla principal para guardar los resultados. Por ejemplo, uno llamado "Resultados".
Para la comparación de campos entre la misma tabla, podrías recorrer la tabla, registro por registro, y ejecutar una acción por cada comparación:
SELECT Tabla
SCAN
** Se comparan "Campo1" y "Campo2"
IF Campo1 == Campo2
** Aquí se pueden realizar muchas acciones
** Para guardar resultados en el nuevo campo
REPLACE Resultados WITH "Iguales"
ELSE
REPLACE Resultados WITH "Diferentes"
ENDIF
ENDSCAN
Es algo sencillo pero espero que te de una idea.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas