Поделиться через


Метод Workspace.OpenDatabase (DAO)

Область применения: Access 2013, Office 2013

Открывает указанную базу данных в объекте Workspace и возвращает ссылку на объект Database, который ее представляет.

Синтаксис

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

expression: переменная, представляющая объект Workspace.

Параметры

Имя

Обязательный/необязательный

Тип данных

Описание

Name

Обязательный

String

Имя существующего файла ядра СУБД Microsoft Access или имя источника данных (DSN) для источника данных ODBC. См. свойство Name для получения дополнительной информации о настройке данного значения.

Options

Необязательно

Variant

Определяет различные опции для базы данных, согласно данным в Комментариях.

ReadOnly

Необязательно устанавливать.

Variant

Установите значение True, если вы хотите открыть базу данных с правами доступа только для чтения, или False (установлено по умолчанию), если вы хотите открыть базу данных с правами доступа на чтение и запись.

Connect

Необязательно заполнять.

Variant

Определяет различные сведения о подключении, включая пароли.

Возвращаемое значение

База данных

Комментарии

Вы можете использовать следующие значения для аргумента Options.

Параметр

Описание

True

Открытие базы данных в монопольном режиме.

False

(По умолчанию) Открытие базы данных в режиме совместного доступа.

Когда вы открываете базу данных, она автоматически добавляется коллекцию Databases.

Несколько советов в отношении применения dbname:

  • Если он ссылается на базу данных, которая уже открыта для доступа другому пользователю, возникает ошибка.

  • Если он не ссылается на существующую базу данных или допустимое имя источника данных ODBC, возникает ошибка.

  • Если он является строкой нулевой длины (""), а для connect установлено значение "ODBC;", откроется диалоговое окно со списком всех зарегистрированных имен источник данных ODBC, где пользователь может выбрать базу данных.

Чтобы закрыть базу данных, а значит удалить объект Database из коллекции Databases, используйте метод Close для объекта.

Примечание.

При обращении к источнику данных ODBC, подключенного к ядру СУБД Microsoft Access вы можете повысить производительность вашего приложения, открыв объект Database, связанный с источником данных ODBC, не прибегая к связыванию отдельных объектов TableDef к определенным таблицам источника данных ODBC.

Пример

В этом примере используется метод OpenDatabase для открытия одной базы данных Microsoft Access и двух баз данных ODBC, подключенных к ядру СУБД 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