Compartir a través de


Método Workspace.OpenDatabase (DAO)

Se aplica a: Access 2013, Office 2013

Abre una base de datos determinada en un objeto Workspace y devuelve una referencia al objeto Database que lo representa.

Sintaxis

expresión . OpenDatabase(Name, Options, ReadOnly, Connect)

expression Variable que representa un objeto Workspace.

Parameters

Nombre

Obligatorio/opcional

Tipo de datos

Descripción

Name

Obligatorio

String

Nombre de un archivo de base de datos del motor de base de datos de Microsoft Access existente o nombre de origen de datos (DSN) de un origen de datos ODBC. Vea la propiedad Name para obtener más información sobre cómo establecer este valor.

Options

Opcional

Variant

Establece varias opciones para la base de datos, tal como se especifica en Comentarios.

ReadOnly

Opcional

Variant

True si quiere abrir la base de datos con un acceso de solo lectura o False (opción predeterminada) si quiere abrir la base de datos con un acceso de escritura/lectura.

Connect

Opcional

Variant

Especifica diversa información de conexión, incluidas las contraseñas.

Valor devuelto

Base de datos

Comentarios

Puede utilizar los valores siguientes para el argumento opciones.

Valor

Descripción

True

Abre la base de datos en modo exclusivo.

False

(Opción predeterminada) Abre la base de datos en modo compartido.

Al abrir una base de datos, se agrega automáticamente a la colección Databases.

Al usar dbname, debe tener en cuenta ciertos aspectos:

  • Si hace referencia a una base de datos que ya está abierta para que acceda otro usuario, se producirá un error.

  • Si no se refiere a una base de datos existente o a un nombre de origen de datos ODBC válido, se produce un error.

  • Si es una cadena de longitud cero ("") y connect es "ODBC;", se mostrará un cuadro de diálogo con una lista de todos los nombres de orígenes de datos ODBC registrados para que el usuario pueda seleccionar una base de datos.

Para cerrar una base de datos y eliminar el objeto Database de la colección Databases, use el método Close del objeto.

Nota:

Al acceder al origen de datos ODBC conectado por el motor de base de datos de Microsoft Access, puede mejorar el rendimiento de su aplicación abriendo un objeto Database conectado al origen de datos ODBC, en lugar de vincular objetos TableDef individuales a tablas específicas en el origen de datos ODBC.

Ejemplo

En este ejemplo se usa el método OpenDatabase para abrir una base de datos de Microsoft Access y dos bases de datos ODBC conectadas por el motor de base de datos de Microsoft Access.

Sub OpenDatabaseX() 
 
 Dim wrkAcc As Workspace 
 Dim dbsNorthwind As Database 
 Dim dbsPubs As Database 
 Dim dbsPubs2 As Database 
 Dim dbsLoop As Database 
 Dim prpLoop As Property 
 
 ' Create Microsoft Access Workspace object. 
 Set wrkAcc = CreateWorkspace("", "admin", "", dbUseJet) 
 
 ' Open Database object from saved Microsoft Access database 
 ' for exclusive use. 
 MsgBox "Opening Northwind..." 
 Set dbsNorthwind = wrkAcc.OpenDatabase("Northwind.mdb", _ 
 True) 
 
 ' Open read-only Database object based on information in 
 ' the connect string. 
 MsgBox "Opening pubs..." 
 
 ' Note: The DSN referenced below must be set to 
 ' use Microsoft Windows NT Authentication Mode to 
 ' authorize user access to the Microsoft SQL Server. 
 Set dbsPubs = wrkAcc.OpenDatabase("Publishers", _ 
 dbDriverNoPrompt, True, _ 
 "ODBC;DATABASE=pubs;DSN=Publishers") 
 
 ' Open read-only Database object by entering only the 
 ' missing information in the ODBC Driver Manager dialog 
 ' box. 
 MsgBox "Opening second copy of pubs..." 
 Set dbsPubs2 = wrkAcc.OpenDatabase("Publishers", _ 
 dbDriverCompleteRequired, True, _ 
 "ODBC;DATABASE=pubs;DSN=Publishers;") 
 
 ' Enumerate the Databases collection. 
 For Each dbsLoop In wrkAcc.Databases 
 Debug.Print "Database properties for " & _ 
 dbsLoop.Name & ":" 
 
 On Error Resume Next 
 ' Enumerate the Properties collection of each Database 
 ' object. 
 For Each prpLoop In dbsLoop.Properties 
 If prpLoop.Name = "Connection" Then 
 ' Property actually returns a Connection object. 
 Debug.Print " Connection[.Name] = " & _ 
 dbsLoop.Connection.Name 
 Else 
 Debug.Print " " & prpLoop.Name & " = " & _ 
 prpLoop 
 End If 
 Next prpLoop 
 On Error GoTo 0 
 
 Next dbsLoop 
 
 dbsNorthwind.Close 
 dbsPubs.Close 
 dbsPubs2.Close 
 wrkAcc.Close 
 
End Sub