Unir varias tablas en una sola ACCESS

Tengo 3 tablas A, B, C, con la misma estructura, necesito unirlas para generar una nueva tabla "X", lo he hecho con una consulta de Unión, pero lo que necesito para el trabajo que estoy elaborando es una nueva tabla.

1 respuesta

Respuesta
1

Allan: Dices que tienes "la misma estructura", pero imagino que los datos serán distinto y buscas una Tabla X que los contenga "Todos", o sea los Registros dela Tabla A, más los de la B, más de los de la C.

Si eso es así, en el Panel Izquierdo marca una de ellas, click con el Botón derecho del Mouse, y pulsa Copiar, pulsa otra vez en la zona de las tablas y Click derecho de nuevo.

Se te abrirá un cuadro de dialogo en el cual y por omisión te pone Copia de..., ahí le pones el nombre que quieras. Hay otra opción que es >> Estructura y datos y Estructura solamente. Elige ésta última.

Una vez creada esa Tabla en blanco, tendrás que crearte 3 Consultas de anexar datos con el asistente, una por cada Tabla de las otras tres y vas anexando.

Ha y otras formas pero aunque esta sea manual es bastante simple. Saludos >> Jacinto

Gracias por tu respuesta Jacinto, seguí tus pasos y voy a tratar de hacerla de alguna forma automática.

Jacinto:

Realicé los pasos que indicaste: crear las 3 consultas por cada tabla A,B,C (con la misma estructura pero con datos diferentes) y las anexé a la tabla X (con la misma estructura).  El problema que ahora se me presenta es que al ejecutar cada una de los anexos varias veces, ellas me duplica los datos que ya he anexado anteriormente. Este procedimiento lo estaré haciendo de forma repetitiva y cada cuanto para ir alimentando la Tabla X, así que debo de evitar los datos duplicados.

Existe alguna manera de evitar los duplicados en las consultas para anexar o existe otra forma de unir las tablas o crear una que se alimente de las 3 como antes indicas?

Allan: Creí que solo lo harías una vez, pero lógicamente si lo haces más de una debes establecer un criterio en la consulta.

Ese criterio debe ser algún identificador único.

Ejemplo: Si tienes una FechaAlgo > WHERE (((TablaX. FechaAlgo) Is Null))

Hay otras formas de hacerlo por VBA, con el INSERT INTO... y lo puedes hacer cada vez que modifiques o actualices un registro de las Tablas A o B o C.

Sin conocimiento de tu estructura y tu proceso, poco más te puedo decir, salvo que aquí andamos para ayudar. MIs Saludos >> Jacinto

Gracias Jacinto, efectivamente dentro de cada tabla que se llaman MovilA,MovilB, MovilC tengo un identificador único para cada uno, el cual se llama Boleta, traté de crear el criterio en cada consulta para anexar a la tabla MovilUnido pero me estanque y no pude avanzar en el criterio, me imagino estoy haciéndolo mal.

Allan: Justo me disponía a cerrar el PC, porque aquí ya es tarde y me ha enrado tu mensaje.

Si las Tablas se llaman tal como las muestras y según dijiste tienen exactamente la misma estructura, mañana te haré un rocedimiento y te lo envío.

Mis saludos >> jacinto

Allan:

Te expondré una Metodología que lo que te va a hacer es :
1.- Borrarte todos los datos de la Tabla destino. La deja limpia por si en un momento dado, no solo se han añadido datos a las Tablas Origen. También se han podido modificar y así es seguro que la información en la Tabla General es la correcta ( o incorrecta), pero será la misma que en las Tablas Origen

‘Para que lo puedas llamar desde cualquier sitio
‘En un Módulo Standard Nuevo o uno que tengas, asegúrate que tiene. Option Compare Database
Option Explicit
‘Declaramos 3 Variables Publicas
Public ObjetoOrigen As String ‘Será el Nombre de la Tabla desde donte Tomamos los Datos Movil A…
Public ObjetoDestino As String ‘Idem de la Tabla en la que vamos a Insertar los datos MovilUnido
Public StrSQL As String

Public Sub InsertaDatos(ObjetoOrigen, ObjetoDestino) ' LLENA DE DATOS TABLA DESDE CONSULTA O TABLA
'Para que se ejecute ésta consulta de Anexado, los Campos de ObjetoOrigen y destino han de ser los mismos y con el mismo Nombre

'Después inserta los datos del ObjetoOrigen
StrSQL = "INSERT INTO " & ObjetoDestino & " SELECT * FROM " & ObjetoOrigen & ";"

DoCmd.SetWarnings False
CurrentDB.Execute StrSQL, dbFailOnError 'Ejecución de la Consulta de Anexar Datos
DoCmd.SetWarnings True

End Sub

En un Formulario, y en algún Evento o en un Botón. Aquí te pongo Botón.
Private Sub BtnTablaMovilUnido_Click()

Objeto Destino = “MovilUnido”

'Primero borro los Registros que haya en ObjetoDestino
StrSQL = "DELETE * FROM " & ObjetoDestino & ";"

DoCmd.SetWarnings False
CurrentDB.Execute StrSQL, dbFailOnError
DoCmd.SetWarnings True
StrSQL = “”
‘Después hacemos una llamada a Insertar, por cada ObjetoOrigen

ObjetoOrigen =”MovilA”
Call InsetaDatos(ObjetoOrigen,ObjetoDestino)

ObjetoOrigen = “MovilB”
Call InsetaDatos(ObjetoOrigen,ObjetoDestino)

‘Y aquí tantas tablas (o consultas) como haya: Haciendo hincapié que la estructura ha de ser Idéntica y con los mismos formatos de Campos, no solo el Nombre
‘Si queremos adornarlo con un aviso>>
MsgBox “El proceso de Inserción de Datos se ha terminado!!!”,vbInformation,”PROCESO CONCLUIDO”
End Sub

Si después de esto sigues interesado en los Anexados parciales me lo comentas. Mis saludos >> jacinto

Hola Jacinto, gracias por tu apoyo.

Procedí a integrar los comandos que me proporcionaste, realicé solamente algunos ajustes mínimos de comillas, asigné el código al botón, pero en el momento de ejecución me tira un error en la siguiente linea (en negrita), revisé algunas sintaxis pero no encuentro el error.

Public Sub InsertaDatos(ObjetoOrigen, ObjetoDestino) ' LLENA DE DATOS TABLA DESDE CONSULTA O TABLA
'Para que se ejecute ésta consulta de Anexado, los Campos de ObjetoOrigen y destino han de ser los mismos y con el mismo Nombre

'Después inserta los datos del ObjetoOrigen
StrSQL = "INSERT INTO" & ObjetoDestino & " SELECT * FROM " & ObjetoOrigen & ";"

DoCmd.SetWarnings False
CurrentDb.Execute StrSQL, dbFailOnError
'Ejecución de la Consulta de Anexar Datos
DoCmd.SetWarnings True

End Sub

No se si hay posibilidad de enviarte el archivo.

Siempre mil gracias

Allan: Para evitar el ir probando y que sigan habiendo dificultades, mejor es lo que propones de enviarme el archivo. Puedes optar por ponerlo aquí en un enlace o mandármelo a [email protected]

Mis saludos >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas