Importar dbf a tabla

Mi problema es que quiero importar el contenido de un archivo DBF a una tabla ya existente de mi base de datos que ya contiene datos. Este proceso me gustaría con Visual Basic ya que lo voy a incorporar a un botón para realizar la importación. La idea no es hacerlo una única vez sino tantas como necesite ya que el DBF ira cambiando.

1 respuesta

Respuesta
2

Disculpa la tardanza, pero tu pregunta me dio chollo, pues es algo que nunca había hecho.

Bien, he aquí lo que conseguí: En tu botón, en el evento Al hacer click, le pones este código:

Dim miSQL As String
'Importamos el DBF a una tabla temporal
DoCmd. TransferDatabase acImport, "dBase III", "RutadetuBD", acTable, "NombreArchivo.dbf", "Temp"
'Quitamos los avisos
DoCmd.SetWarnings False
'Insertamos los registros de la tabla temporal en la final
miSQL = "INSERT INTO NombreTabla SELECT * FROM Temp"
DoCmd.RunSQL miSQL
'Borramos la tabla temporal
miSQL = "DROP TABLE Temp"
DoCmd.RunSQL miSQL
'Activamos los avisos
DoCmd.SetWarnings True

Comentarios al código:

1º/ tienes que cambiar lo que está en negrita por los nombres que tu tengas. RutadetuBD será la ruta completa donde tengas la BD (por ej, C:\Mis Documentos\), NombreArchivo será el nombre del tu archivo dbf a importar, y NombreTabla será el nombre de la tabla de destino de los datos importados.

2º/ La tabla de destino, la tienes que tener ya creada, con la misma estructura que el archivo dbf (si no la tienes creada, puedes hacerlo rápidamente con este codigo:

DoCmd. TransferDatabase acImport, "dBase III", "RutadetuBD", acTable, "NombreArchivo.dbf", "NombreTabla", True )

3º/ Lo que hace el código, es importar el dbf a una tabla "temporal", luego pasar los registros a la tabla definitiva y borrar la tabla "Temporal"

4º/ Si no te funciona, prueba cambiando "dBase III" por "dBase IV" o "dBase 5.0"

Ante todo muchas gracias por tu respuesta. La idea que me planteas es buena lo que ocurre es que cuando crea la tabla temporal solo me importa la estructura de campos pero no los datos. A ver que se te ocurre.

Gracias de nuevo

Con esta linea, en teoría debería importarte también los datos (yo hice la prueba e importa todo):

DoCmd. TransferDatabase acImport, "dBase III", "RutadetuBD", acTable, "NombreArchivo.dbf", "Temp"

Para que importe solo la estructura, tienes que añadirle al final el True:

DoCmd. TransferDatabase acImport, "dBase III", "RutadetuBD", acTable, "NombreArchivo.dbf", "Temp", True

De todos modos, prueba a ponerle al final un False, para asegurar:

DoCmd. TransferDatabase acImport, "dBase III", "RutadetuBD", acTable, "NombreArchivo.dbf", "Temp", False

Te comento que este procedimiento lo hice así, por medio de una tabla temporal, porque no encontré forma de que importe a la misma tabla: cada vez que le daba al botón de importar (solo con la linea del TransferDataBase), me creaba una nueva tabla...

Estupendo, funcionó correctamente. Efectivamente, tenia puesto "true", lo cambié a "false" y tenia los registros importados. Te quedo eternamente agradecido.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas