Cómo crear una tabla de Access
Por Enrique Martínez Montejo
Última revisión: 15/06/2003
 

Utilizando el método Append de la colección Tables del objeto Catalog, podemos crear nuevas tablas en nuestra base de datos. Para ello es necesario declarar previamente un nuevo objeto Table, donde añadiremos los campos o columnas que estarán disponibles en nuestra nueva tabla.

El siguiente ejemplo creará una hipotética tabla de Clientes:

Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table

' Abrimos el catálogo
Set cat = New ADOX.Catalog

cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source = C:\Mis documentos\Mi base.mdb;"
' Creamos la tabla
Set tbl = New ADOX.Table

With tbl
    .Name = "Clientes"
    ' Añadimos los campos a la tabla
    .Columns.Append "IdCliente", adInteger
    .Columns.Append "Nombre", adVarWChar, 50
    .Columns.Append "CIF", adVarWChar, 9
    .Columns.Append "FechaAlta", adDate
    .Columns.Append "Domicilio", adVarWChar, 50
    .Columns.Append "CPostal", adInteger
    .Columns.Append "Localidad", adVarWChar, 30
    .Columns.Append "Provincia", adVarWChar, 20
    .Columns.Append "Pais", adVarWChar, 20
    .Columns.Append "Telefono", adVarWChar, 10
    .Columns.Append "Fax", adVarWChar, 10
    .Columns.Append "TotaICompras", adCurrency
    .Columns.Append "Notas", adLongVarWChar
End With

' Añadimos la tabla al catálogo
cat. Tables.Append tbl

En el momento de agregar los campos a la tabla, y antes de añadir la tabla al catálogo, puede que nos interese describir las características de cada columna, estableciendo los atributos propios de cada campo mediante la propiedad Attributes del objeto Column, cuyo valor predeterminado es cero (0), aunque también puede ser una combinación de las siguientes constantes:

Constante Valor Descripción
adColFixed 1 El campo es de longitud fija (Requerido)
adColNullable 2 El campo puede contener valores nulos (No requerido)

Volviendo al ejemplo anterior, si deseamos la presencia de valores nulos como datos válidos para el campo Fax, deberemos de escribir:

.Columns.Append "Fax", adVarWChar, 10
.Columns("Fax").Attributes = adColNullable

También puede que no interese crear un campo Autonumérico, o permitir una cadena de longitud cero ("") como dato válido para un tipo de datos Texto o Memo. Para ello, necesariamente tendremos que especificar el catálogo principal de la columna, utilizando la propiedad ParentCatalog del objeto Column, la cual nos permite acceder a las propiedades específicas del proveedor antes de añadir la tabla al catálogo.

Si deseamos que el campo IdCliente de nuestra tabla sea Autonumérico, y que en el campo Notas se permita una cadena de longitud cero como dato válido, los mismos se crearían de la siguiente manera:

' Creamos la tabla
Set tbl = New ADOX.Table

With tbl
    .Name = "Clientes"

    ' Especificamos el catálogo principal
    Set .ParentCatalog = cat
   
    ' Añadimos los campos a la tabla
    .Columns.Append "IdCliente", adlnteger

    ' Hacemos el campo Autonumérico
    .Columns("IdCliente").Properties("AutoIncrement") = True
   
    ' Añadimos un campo Memo a la tabla
    .Columns.Append "Notas", adLongVarWChar

    ' Permitimos la longitud cero
    .Columns("Notas").Properties("Jet OLEDB:Allow Zero Length") = True

    ' Añadimos los restantes campos de la tabla

End With

' Añadimos la tabla al catálogo
cat. Tables.Append tbl

En relación con las propiedades Requerido y Permitir longitud cero, hay que tener presente que, el utilizar la biblioteca de ADOX para crear una tabla, la primera propiedad tiene el valor por defecto en las versiones 97, 2000 y 2002 de Microsoft Access, para todos los tipos de campos, a excepción de los campos tipo Autonuméricos. En cuanto a la segunda propiedad, su valor predeterminado es No en la versión de Microsoft Access 97, y en las versiones posteriores para los tipos de campos Texto y Memo.

Abierto un objeto Catalog, podemos hacer referencia a una tabla existente en la base de datos mediante la colección Tables de dicho objeto:

' Hacemos referencia a la tabla Clientes
Set tbl = cat.Tables!Clientes

Una vez referencia la tabla, las propiedades dinámicas que componen la colección Properties del objeto Table son las siguientes:

Propiedad Tipo de dato
Jet OLEDB:Cache Link Name/Password adBoolean
Jet OLEDB:Create Link adBoolean
Jet OLEDB:Exclusive Link adBoolean
Jet OLEDB:Link Datasource adBSTR
Jet OLEDB:Link Provider String adBSTR
Jet OLEDB:Remote Table Name adBSTR
Jet OLEDB:Table Validation Rule adBSTR
Jet OLEDB:Table Validation Text adBSTR
Jet OLEDB:Table Hidden In Access adBoolean
Temporary Table adBoolean

 

Otros enlaces de interés:

Cómo crear una base de datos Access

Cómo eliminar una tabla de Access

Cómo añadir una columna a una tabla de Access ya existente

Cómo eliminar una columna de una tabla de Access

Cómo crear un índice en una tabla de Access

Cómo crear una vista

Cómo vincular una tabla de una base de datos Access

Cómo crear, ejecutar y eliminar una consulta de parámetros en Access

Cómo crear nuevas tablas

Colección de ejemplos de la biblioteca de ADOX


Enrique Martínez Montejo - 2003

NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.

NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.