Метод 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