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

El siguiente ejemplo creará una nueva base de datos Access, utilizando para ello el método Create del objeto Catalog de la biblioteca de Extensiones ADO para el lenguaje de definición de datos y seguridad (ADOX). Simplemente tiene que hacer referencia en su proyecto Visual Basic a la biblioteca Microsoft ADO Ext. 2.x for DDL and Security.

La sintaxis del método Create es la siguiente:

objCatalog.Create CadenaConexión

donde CadenaConexión es una variable String que deberá incluir los parámetros necesarios para establecer la conexión con la base de datos, teniendo en cuenta que, si el proveedor utilizado no admite la creación de la base de datos, se producirá el correspondiente error.

Dim cat As ADOX.Catalog

' Creo un objeto Catalog
Set cat =  New ADOX.Catalog

' Genero una nueva base de datos
cat.Create "Provider = Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source = C:\Mis documentos\Mi base.mdb"

Si deseamos establecer una contraseña en el momento de crear la base de datos, hay que utilizar la siguiente cadena de conexión, procurando que la longitud de la contraseña no exceda de veinte caracteres:

cat.Create "Provider = Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source = C:\Mis documentos\Mi base.mdb;" & _
           "Jet OLEDB:Database Password = 1234”

Hay que tener especial cuidado en no separar con un espacio en blanco las palabras OLEDB: y Database, porque de hacerlo nos encontraremos con el error No se pudo encontrar el archivo ISAM instalable. Por tanto, la escritura correcta es OLEDB:Database, sin espacios en blanco, lo que también es válido para cualquier otro nombre de propiedad que comience por Jet OLEDB:.

En el momento de crear la base de datos, por defecto pertenece al usuario admin, por lo que si queremos que la base de datos pertenezca a otro usuario, debemos especificar en la cadena de conexión el nombre de usuario y su contraseña, si tiene establecida alguna. Para ello, necesariamente tendremos que especificar la ruta del archivo de información de grupos de trabajo donde se encuentre previamente incluido el usuario. Asimismo, tendrá que pertenecer a un grupo de trabajo que tenga los permisos oportunos para crear bases de datos, porque de lo contrario obtendremos un error. Por defecto, los usuarios pertenecientes a los grupos Admins o Users, tienen permiso para crear una base de datos. El siguiente ejemplo, creará una base de datos cuyo propietario será el usuario establecido en la propiedad User ld:

cat.Create "Provider = Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source = C:\Mis documentos\Mi base.mdb;" & _
           "Jet OLEDB:Database Password = 1234;" & _
           "Jet OLEDB:System Database = C:\Windows\System\System.mdw;" & _
           "User Id = José Pérez;" & _
           "Password = abcd"

La versión de la base de datos creada será la que corresponda con el motor de base de datos Microsoft Jet que tengamos instalado por defecto en nuestro sistema. Si queremos crear una nueva base de datos con un tipo de versión en concreto, deberemos de especificar en la cadena de conexión la propiedad Jet OLEDB:Engine Type, la cual puede tomar uno de los siguientes valores, que corresponderá con los distintos tipos de motores OLEDB que puede utilizar:

Si el usuario tiene instalado en su sistema Microsoft Access 2002, el que se cree una base de datos formato Access 2000 o Access 2002 dependerá del formato de archivo predeterminado que tenga establecido como valor por defecto en el cuadro de diálogo Opciones de Microsoft Access, por tanto, si especificamos en la cadena de conexión el parámetro:

Jet OLEDB:Engine Type = 5

la base de datos creada tendrá formato Access 2000, si así lo tenemos especificado en nuestras Opciones; en caso contrario, la base de datos tendrá el formato de Access 2002.

Dicho valor se guarda en el parámetro Default File Format de la siguiente clave del registro de Windows, HKEY_CURRENT_USER\Software\Microsoft\Office\10.0\Access\Settings, el cual puede tomar uno de los siguientes valores DWORD:

Una vez creada la base de datos, la propiedad ActiveConnection del objeto Catalog se puede asignar a la propiedad ConnectionString de un objeto Connection de la biblioteca de ADO, de ésta forma no tendremos que utilizar el método Open del objeto Connection para abrir la base de datos, aunque hay que hacer la salvedad de que no se dispondrá del mismo número de propiedades que si utilizamos dicho método:

Dim cnn As ADODB.Connection

Set cnn = New ADODB.Connection
cnn.ConnectionString = cat.ActiveConnection

' Leemos el número de propiedades
MsgBox cnn.Properties.Count, , "Propiedades del objeto Connection"

 

Otros enlaces de interés:

Cómo crear una tabla

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

Cómo compactar una base de datos 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.