Cómo añadir una columna a una tabla existente de Access
Por Enrique Martínez Montejo
Última revisión: 14/06/2003
 

Puede ser que nos interese añadir un nuevo campo o columna a una tabla ya existente. Para ello necesitaremos declarar un objeto Column y definir sus propiedades, para después poder agregarlo a la colección Columns del objeto Table, mediante el método Append de dicha colección.

El siguiente ejemplo creará un nuevo campo en nuestra tabla Clientes:

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

' Abrímos 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 un nuevo objeto Column
Set col = New ADOX.Column

' Especificamos las propiedades del campo
With col
    .Name = "PersonaContacto"
    .Type = adVarWChar
    .DefinedSize = 40
End With

' Hacemos referencia a la tabla donde añadiremos el campo
Set tbl = cat.Tables("Clientes")

' Añadimos la columna a la tabla
tbl.Columns.Append col

En el supuesto de que necesitemos acceder a las propiedades del campo específicas de un proveedor de datos, necesitaremos especificar el catálogo principal de la columna antes de añadir el campo a la tabla, utilizando para ello la propiedad ParentCatalog del objeto Column:

With col
    ' Especificamos el catálogo principal
    Set .ParentCatalog = cat
    .Name = "PersonaContacto"
    .Type = adVarWChar
    .DefinedSize = 40
    ' Permitimos la longitud cero
    .Properties("Jet OLEDB:Allow Zero Length") = True
End With

En relación con las propiedades Requerido y Permitir longitud cero, hay que tener presente que, el utilizar la biblioteca de ADOX para añadir campos a una tabla existente, 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, y posteriormente, hacer referencia a la colección Columns de un objeto Table:

' Referenciamos la tabla
Set tbl = cat.Tables!Clientes

' Referenciamos el campo
Set col = tbl.Columns!PersonaContacto

Una vez referenciado el campo, las propiedades dinámicas que componen la colección Properties del objeto Column son las siguientes:

Propiedad Tipo de dato
Autoincrement adBoolean
Default adEmpty
Description adBSTR
Fixed Length adBoolean
Increment adInteger
Jet OLEDB:AutoGenerate adBoolean
Jet OLEDB:Allow Zero Length adBoolean
Jet OLEDB:Column Validation Rule adBSTR
Jet OLEDB:Column Validation Text adBSTR
Jet OLEDB:Compressed UNICODE Strings adBoolean
Jet OLEDB:Hyperlink adBoolean
Jet OLEDB:IISAM Not Last Column adBoolean
Jet OLEDB:One BLOB per Page adBoolean
Nullable adBoolean
Seed adInteger

 

 

Otros enlaces de interés:

Cómo crear una base de datos Access

Cómo crear una tabla de Access

Cómo eliminar una columna de una tabla de Access

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.