Cómo crear un proyecto Microsoft Access
Por Enrique Martínez Montejo
Última revisión: 23/08/2005
 

Con la aparición de Access 2000, Microsoft introdujo un nuevo tipo de archivo de Access que ofrecía la posibilidad de crear y mantener soluciones con Microsoft SQL Server. A estos tipos de archivos con extensión .adp, se le conocen con el nombre de proyectos de Microsoft Access, y se utilizan para crear aplicaciones cliente-servidor, representando el propio proyecto de Access el lado cliente de la aplicación cliente-servidor, siendo la propia base de datos SQL Server, a la que se conecta el proyecto de Access mediante una conexión OLE DB, el lado servidor de la aplicación.

La única manera de crear un nuevo proyecto Microsoft Access mediante programación, es llamando al método NewAccessProject del objeto Access.Application, por lo que es un requisito imprescindible tener instalado en el equipo una versión de Microsoft Access 2000 o superior. Dicho método admite dos parámetros para crear el nuevo proyecto de Access: la ruta y el nombre del propio proyecto de Access, y la cadena de conexión con la base de datos de SQL Server a la que se vinculará el proyecto de Access.

El siguiente ejemplo, en primer lugar creará una nueva base de datos SQL Server, mediante la consulta T-SQL CREATE DATABASE, creando posteriormente el nuevo proyecto de Access.

No es necesario que en el proyecto de Visual Basic haga una referencia expresa a la biblioteca de Access, dado que la crearemos en tiempo de ejecución mediante la función CreateObject, de esta forma nuestra aplicación no estará sujeta a una versión en concreto de la citada biblioteca. Por supuesto, sí deberá de hacer una referencia expresa a la biblioteca de ADO, para crear la base de datos de SQL Server.

Private Sub CreateNewAccessProject()

    Dim oAccess As Object
    Dim strCnnSQLServer As String
    Dim cnn As ADODB.Connection

    ' Construimos la cadena de conexión, utilizando la seguridad integrada
    ' de Windows NT para conectarnos a la instancia local de SQL Server
    '

    strCnnSQLServer = "Provider = SQLOLEDB.1;" & _
                      "Data Source=(local);" & _
                      "Integrated Security=SSPI;"

    On Error Resume Next

    ' Creamos una nueva base de datos SQL Server
    '
  
 Set cnn = New ADODB.Connection

    With cnn
        .ConnectionString = strCnnSQLServer
        .Open
        .Execute "CREATE DATABASE NuevaDB " & _
                 "ON (" & _
                 "NAME = NuevaDB_dat, " & _
                 "FILENAME = 'C:\Mis documentos\NuevaDB.mdf') " & _
                 "LOG ON (" & _
                 "NAME = NuevaDB_log, " & _
                 "FILENAME = 'C:\Mis documentos\NuevaDB.ldf')", , adCmdText
        ' Cerramos la conexión
        cnn.Close
    End With

    Set cnn = Nothing

    If (Err.Number <> 0) Then
        MsgBox Err.Description, vbInformation, "Crear base SQL Server"
        Exit Sub
    End If

    ' Una vez creada la base de SQL Server, estamos en condiciones
    ' de crear un nuevo proyecto Access
    '
    ' Creamos una nueva instancia del objeto Access.Application
    '

    Set oAccess = CreateObject("Access.Application")

    ' Añadimos el catálogo inicial a la cadena de conexión de SQL Server.
    ' De no indicarse, el proyecto de Access se vinculará a la base
    ' de datos Master.
   
strCnnSQLServer = strCnnSQLServer & "Initial Catalog=NuevaDB"

    ' Creamos el proyecto de Access
    With oAccess
        .NewAccessProject "C:\Mis documentos\Mi Proyecto", strCnnSQLServer
        .Quit
    End With

    Set oAccess = Nothing

    If (Err.Number <> 0) Then
        MsgBox Err.Description, vbInformation, "Crear proyecto Access"
    Else
        MsgBox "Se ha creado con éxito el nuevo proyecto Access.", _
                    vbInformation, "Crear proyecto Access"
    End If

End Sub

 

Otros enlaces de interés:

Indice de Ejemplos de ADO


Enrique Martínez Montejo - 2005

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.