Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
Base de datos : Abrir una base de datos externa
Autor/es:
Juan M Afán de Ribera
Pregunta : ¿Qué código tengo que utilizar para abrir una base de datos externa y así tener acceso a los formularios e informes?
Respuesta : Existen varias maneras de poder abrir una base de datos externa:

Puedes utilizar la función shell como una línea de comandos
Dim AccessPath As String
Dim DbPath As String

    AccessPath = SysCmd(acSysCmdAccessDir) & "MSACCESS.EXE"
    DbPath = "C:\bd1.mdb"
    Shell AccessPath & " " & DbPath
También puedes utilizar el método FollowHyperlink
Dim DbPath As String

    DbPath = "C:\bd1.mdb"
    Application.FollowHyperlink DbPath
E incluso puedes utilizar el API de Windows con funciones como ShellExecute o ShellExecuteEx
Private Declare Function ShellExecute Lib "shell32.dll" _
                Alias "ShellExecuteA" _
                (ByVal hwnd As Long, _
                ByVal lpOperation As String, _
                ByVal lpFile As String, _
                ByVal lpParameters As String, _
                ByVal lpDirectory As String, _
                ByVal nShowCmd As Long) As Long

Sub OpenBd()
Dim DbPath As String

    DbPath = "C:\Bd1.mdb"
    ShellExecute 0&, vbNullString, DbPath, vbNullString, vbNullString, 0&
    
End Sub
Todo este tipo de código abrirá una base de datos y funcionará bien. Pero a partir de ahí, si quieres hacer algo con esa base de datos y tener control sobre sus objetos la cosa se va a complicar.

Para el caso de que desees manipular esa base de datos y lo que contiene, tendrás que utilizar Automatización. Con Automatización puedes tener control absoluto a través de código de esa base de datos (y de hecho de cualquier aplicación que permita esta técnica, pero eso ya es parte de otro tema).

En este caso os pondré un ejemplo simple de cómo abrir una base de datos y mostrar un formulario y un informe.
' Ejemplo de automatización
Dim DbPath As String
Dim oApp As Access.Application

    DbPath = "C:\bd1.mdb"
    ' instanciamos una nueva ventana de Access
    Set oApp = New Access.Application
    
    With oApp
        ' la hacemos visible
        .Visible = True
        ' abrimos la base de datos
        .OpenCurrentDatabase DbPath
        ' abrimos un formulario de esa base de datos
        .DoCmd.OpenForm "Formulario1"
        ' abrimos un informe de esa base de datos
        .DoCmd.OpenReport "Informe1", acViewPreview
        ' ejecutamos una función de esa base de datos
        .Run "MiFuncion"
    End With
    
    Set oApp = Nothing
Como podéis ver, la variable oApp es un objeto Application que representa a una aplicación Access. Dentro de esa variable tendremos acceso a todas las propiedades y métodos de la aplicación, así como a los objetos contenidos en la base de datos que abra.

Ejemplos:

 

Temas relacionados:

 

Última actualización: 8/1/2005