Quisiera saber si es posible volcar la información de las tablas de otras bd a una en access

La pregunta es, si yo diseño una bd común y la distibuyo por varias sucursales yo desde la mía podría podría mediante un cmd, ¿pasar la información de las bd a la mía para manejar la de todas las sucursales?

Es decir como no puedo colgar la bd en un servidor la idea era hacer la misma estructura de la bd y cada cierto tiempo volcarla a la mía mediante un botón y que los campos que ya estuvieran pues los reemplace por los nuevos y añadir los nuevos.

He estado leyendo y se que se puede conectar con un bd para importas las tablas pero como en el caso que digo serian las que están y serian varias distintas pues me quede un poco cojo de información me refiero mimas tablas (de cada sucursal) y distintos datos.

¿Y la siguiente pregunta para que no se machaquen registro debería crearse un alfanumérico por cada sucursal como id no?.

Espero que alguien me pueda arrojar algo de luz sobre este tema.

1 Respuesta

Respuesta
1

El proceso que quieres realizar es bastante peliagudo y tienes que ir con mucho cuidado. Si esas tablas tuvieran relaciones con otras ya te digo que ni lo intentes, dado que se podría montar un "pitote" de cuidado. El hecho de poner un identificador para cada BD mejoraría la situación, pero deberías asegurarte de que todas las relaciones cuelgan de ese identificador por sucursal.

Simplificando un hipotético ejemplo, suponiendo que te interesa la información de una tabla llamada TDatos, lo que podrías hacer (pero es bastante manual) sería:

1.- Te creas una carpeta "fija" (es decir, que no se modifique su ruta) y ahí metes todas las BD's que te envíen. Si ya están pues las machacas y listo. Eso sí, cada BD debería tener un nombre representativo. Por ejemplo, BDSucursal1, BDSucursal2, etc.

2.- En tu BD creas la tabla TDatos, igual al resto, pero sólo en su estructura. Si tienes algún id autonumérico conviértelo simplemente a numérico (al tener que hacer esto es por lo que te comentaba que si tienes relaciones todas se iban al garete")

3.- Vincula (no importes) la tabla TDatos de BDSucursal1, BDSucursal2, etc. Este paso sólo lo tendrías que realizar la primera vez, de ahí que sea necesario que las BD's estén en una ruta "fija", porque si no tendrías que revincularlas cada vez.

4. Créate una consulta en blanco (sin basarte en ninguna tabla) y ponla en vista SQL. Supongamos que la llamas CUneTablas. En ella escribe la siguiente SQL:

SELECT * FROM TBDSucursal1

UNION

SELECT * FROM TBDSucursal2

UNION

SELECT * FROM TBDSucursal3

Y así con todas las sucursales que tengas.

5.- Créate una consulta basada en CUneTablas, llamémosla CTraspasaDatos, y conviértela en una consulta de inserción de datos.

6.- En un formulario, con un botón de comando, en su evento al hacer clic le generas el siguiente código:

...

Private Sub...

Currentdb.execute("DELETE FROM TDatos")

Docmd. Openquery "CTraspasaDatos"

msgbox "Hecho"

End sub

...

Y con esto puedes recoger los datos de todas las tablas en una, siempre teniendo presente que la hipótesis de partida era que manejabas una sola tabla que contenía la información relevante.

Insisto que si tienes relaciones entre tablas el proceso se complicaría bastante, por no decir que sería imposible hacerlo (por los Id's duplicados).

Voy hacer una prueba y te comento que tal va, porque estuve dándole vueltas al tema y con volver solo la información de la taBla TDatos como bien dices me valdría perfectamente porque las otras es por decirlo de alguna manera serían Tablas auxiliares que amplían la información recogida en TDatos, de las cuales podría prescindir para facilitar el tema.

Tengo una duda y es como se realiza una consulta de inserción que me comenas, y la siguiente es si con este método que me parece perfecto, ¿si yo tengo un registro a medias el lunes (es decir faltan algunos campos por cubrir) y lo vuleco a mi bd y el lunes siguiente esta completo al estar vinculadas quedaría solo el ultimo verdad?

Un saludo

Kike:

Una consulta de inserción se hace creando una consulta de selección y, una vez la tienes confeccionada, tienes un botón donde le dices que es una consulta de inserción de datos. Te pedirá en qué tabla tienes que insertar los datos y a continuación, en el grid, te aparecerá una nueva línea donde puedes indicar los campos de destino.

El proceso que te propongo no inserta los nuevos datos: los inserta todos cada vez. De ahí que primero se borre toda la información de la tabla y después se vuelque toda la información. Así, si alguien ha modificado datos "antiguos", también te recogerá esas modificaciones.

Saludos. Neckkito

¡Gracias! Esta tarde realizare las prueba, y te comento que tal me fue la experiencia.

Muchas gracias

Un saludo

Buenas noches, Neckkito, y lo he probado y funciona correctamente con esto me basta y me sobre sobre TDatos he realizado un formulario continuo y le he creado filtros, y va todo correcto.

Muchísimas gracias como siempre.

Un saludo

:D

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas