Anexar muchas tablas

Hola Experto:
Resulta que tengo unas 70 tablas que quiero anexar, cada una con alrededor de 10 o más campos. Entre ellos tienen campos iguales pero otros no. Lo que quiero hacer una base de dados única que anexe todos los campos y datos y si cierta tabla no contiene el campo de la otra no importa, que quede en blanco.
Para hacer esto pensé en hacer una tabla-completa con todos los campos de todas las tablas y con esta base ir agregando las demás tablas con la consulta de anexación.
El problema es que no se como agregar de una manera óptima todos los campos de las 70 tablas para que no queden repetidos en la tabla base y luego en la consulta de anexación me pone problemas si hago más de una a la vez.
¿Qué me recomiendas?
Gracias!

1 respuesta

Respuesta
1
Es bastante complejo, pero se puede hacer. Los pasos serían:
a) Introducir en una tabla los nombres de esas 70 tablas que quieres anexar.
b) Crear un formulario, con un botón, y en el código que activa el botón con el click hacer un programilla que haga lo siguiente:
c) Abrir cada tabla de la lista.
d) Leer los campos que contiene y crear una consulta de anexado de datos con los campos que correspondan.
e) Ejecutarla desde Visual Basic
f) Siguiente tabla.
Si necesitas ayuda para ir dando los pasos, dime. Por ejemplo, el código siguiente lee la definición de tablas de una base de datos e imprime (Debug) los nombres de las tablas con sus campos. En tu caso, no necesitaríamos leer la definición de tablas de la bbdd, porque ya sabes los nombres. Mira a ver si puedes modificar el código e ir haciendo los pasos. Si no, vete preguntándome por orden.
Private Sub Comando0_Click()
    Dim dbs As Database
    Set dbs = CurrentDb
    Dim rsTabla As Recordset
    Dim objFields As Fields
    Dim strSQL As String
   Dim tdfLoop As TableDef
   With dbs
      For Each tdfLoop In .TableDefs
        With tdfLoop
         If Not (.Name Like "Msys*") Then
            Debug.Print "Properties of " & .Name
            strSQL = "SELECT * FROM " & .Name
            Set rsTabla = dbs.OpenRecordset(strSQL)
            Set objFields = rsTabla.Fields
            For intLoop = 0 To (objFields.Count - 1)
                Debug.Print objFields.Item(intLoop).Name
            Next
            rsTabla.Close
            Set rsTabla = Nothing
         End If
        End With
      Next tdfLoop
   End With
End Sub
Solucioné el tema de los campos, fui viendo cuales eran todos los campos posibles e hice una tabla Base Completa con todos los campos. Sin embargo aun no logro solucionar el tema de la anexación múltiple...
Ojalá puedas ayudarme
Podrías cerrar la pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas