Buenos dias!
Desde una aplicacion externa deseo trabajar con 2 ficheros dbf, uno de clientes, otro de facturas. Primero paso los dbf a mdb y desde ahí los traspaso mediante un tubo a vv. Hasta ahí todo correcto.
El problema lo tengo cuando hago la importacion una segunda o tercera vez para actualizar la tabla de vv; o bien me duplica los clientes y las facturas o bien si hago algun campo con el indice de clave única, me da error en la importacion, al encontrar (claro) las claves duplicadas, esta última opción funciona, pero claro es un engorro que el progama me de el error constantemente.
Importa a un tabla temporal que vacías en cada importación. Una vez tengas los datos en la temporal compruebas si existen en la definitiva. Si existen actualizas y si no, añades.
Si aún no lo has resuelto, te comento como lo hacía yo y no me daba ése error. En el tubo de importación le marcas en Estilos:
NO INDEXAR Y HACER REGEN AL FINAL
USAR CONTENIDO INICIAL CAMPO DESTINO
USAR ACTUALIZACIONES EN DESTINO (si las tiene)
Y en propiedades del campo Código de la tabla destino de VV le pones en Contenido inicial : NINGUNO.
Cuando actua el tubo si existe el código no lo dá de alta.
De todas formas te digo que lo hacía así hasta que tuve errores con unas dll del XP y un colega de éste foro me recomendó que exportara de ACCESS a TEXTO "Ancho fijo" y te preparas un proceso para leer el archivo.txt y listo. Es más costoso sobre todo si tienes muchos campos pero a la larga es lo más fiable.
Perdón Xulitín !!! . He estado mirando la importación que yo realizaba y como ya la traía depurada de Access no me daba clave repetida. No obstante se me ocurre , aparte de lo que te comenta Francisco que seguro que es mejor que lo mío, es el proceso que te adjunto que lo he probado y funciona. Lo que no sé es el rendimiento que puede dar cuando haya muchos registros.
Saludos y perdón de nuevo por si te he hecho perder el tiempo.
Gracias Paolo y disculpa la tardanza en responderte pero estuve de vacaciones. Los que teneis que perdonar sois vosotros por tener que contestar a personas novatas como yo. Voi a intentar hacer lo que tu me dices, a ver si lo consigo, porque los novatos es lo que tenemos, intentamos meternos en todo y al final, sólo gente como vosotros nos sacais del pozo. Muchas gracias, de verdad y ya te diré algo.
Yo vincularía la tabla DBF a una base de datos Access, construiría la consulta correspondient, con las modificaciones que interese, e importaría de esta consulta, como dice Fran, a una tabla auxiliar igual que la consulta. Luego por los procesos adecuados añadiría sólo los registros nuevos.
杜鹃鸟
Juan Miguel Figueroa Dorrego
Fontanía Lógica ™, E.P.I.
Una empresa personal imaginaria
Posición:
43.532928,-5.628616
Buenas tardes .
Entiendo lo que proponeis, donde me hago un lío y no se por donde andar es en como hacer para comparar las dos tablas, es decir, hago la importacion a esa tabla temporal, pero dada mi novatez no doy hecho la comparación con la definitiva. Si alguien tuviera algún ejemplo lo agradecería. En la ayuda tampoco encuentro nada. Muchas gracias y mil disculpas.
No hay ningún objeto que te permita comparar las tablas. Tendrás que recorrer la tabla temporal y realizar búsquedas en la tabla definitiva para ver si el registro existe o no.
Buenas tardes.
Fran, no consigo hacer funcionar. Hago lo siguiente.
1.- Antes de nada vacio la tabla puente cargando la lista, y recorriendola eliminando los registros.
2º Hago la importación total desde la base access a la tabla puente.
Aquí es donde empieza mi problema y supongo que será de "indices". ¿Qué tipo de índice necesito declarar para hacer la "comparación" y ver si el registro existe ya en la tabla definitiva? ¿O debería de plantearlo de otra manera?. Gracias.