Partager via


Méthode Workspace.OpenDatabase (DAO)

S’applique à : Access 2013, Office 2013

Ouvre une base de données spécifiée dans un objet Workspace et renvoie une référence à l’objet Database qui le représente.

Syntaxe

expression . OpenDatabase(Name, Options, ReadOnly, Connect)

expression Variable qui représente un objet Workspace.

Paramètres

Nom

Obligatoire/facultatif

Type de données

Description

Name

Obligatoire

Chaîne

Nom d'un fichier de base de données de moteur de base de données Microsoft Access existant, ou nom de la source de données (DSN) d'une source de données ODBC. Pour plus d'informations sur la définition de cette valeur, reportez-vous à la propriété Name.

Options

Facultatif

Variant

Définit différentes options pour la base de données, selon les indications dans les notes.

ReadOnly

Facultatif

Variant

True si vous souhaitez ouvrir la base de données avec un accès en lecture seule, ou False (valeur par défaut) si vous souhaitez ouvrir la base de données avec un accès en lecture/écriture.

Connect

Facultatif

Variant

Spécifie les différentes informations de connexion, dont les mots de passe.

Valeur renvoyée

Database

Remarques

Vous pouvez utiliser les valeurs ci-dessous pour l’argument options.

Setting

Description

True

Ouvre la base de données en mode exclusif.

False

(Valeur par défaut) Ouvre la base de données en mode partagé.

Lorsque vous ouvrez une base de données, elle est automatiquement ajoutée à la collection Databases.

Certaines considérations s’appliquent lorsque vous utilisez dbname :

  • S'il s'agit d'une base de données déjà ouverte pour un accès par un autre utilisateur, une erreur se produit.

  • S'il ne s'agit pas d'une base de données existante ou d'un nom de source de données ODBC valide, une erreur se produit.

  • S’il s’agit d’une chaîne nulle ("") et si connect prend la valeur "ODBC;", une boîte de dialogue répertoriant tous les noms de source de données ODBC enregistrés s’affiche afin que l’utilisateur puisse sélectionner une base de données.

Pour fermer une base de données, et ainsi supprimer l’objet Database de la collection Databases, utilisez la méthode Close dans l’objet.

Remarque

Lorsque vous accédez à une source de données ODBC connectée au moteur de base de données Microsoft Access, vous pouvez améliorer les performances de votre application en ouvrant un objet Database connecté à la source de données ODBC, plutôt qu’en liant des objets TableDef individuels à des tables spécifiques dans la source de données ODBC.

Exemple

Cet exemple utilise la méthode OpenDatabase pour ouvrir une base de données Microsoft Access et deux bases de données ODBC connectées par le moteur de base de données 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