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 Sí 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 Sí 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 vincular una tabla de una base de datos Access
Cómo crear, ejecutar y eliminar una consulta de parámetros en Access
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.