Шаг 11 - Метод OpenDatabase<div style="position:absolute;left:-10000px;">< img src="5.png" style="border:0;" height="1" width="1" alt="top@Mail.ru"/>< /div>
Описание
Открывает указанную базу данных в объекте Workspace и возвращает ссылку на объект Database, представляющий эту базу данных.
Set базаДанных = рабочаяОбласть.OpenDatabase (имяБД, параметры, толькоЧтение, подключение)
Параметры
базаДанных
Объектная переменная, представляющая открываемый объект Database.
рабочаяОбласть
Необязательный. Объектная переменная, представляющая существующий объект Workspace, который будет содержать базу данных. Если аргумент рабочаяОбласть не задан, метод OpenDatabase использует стандартную рабочую область.
имяБД
Выражение или переменная типа String, задающая имя существующего файла базы данных с ядром Microsoft Jet или имя источника данных ODBC. Дополнительные сведения о значениях данного аргумента см. в разделе справки для свойства Name.
параметры
Необязательный. Выражение или переменная типа Variant, задающая параметры базы данных.
Для рабочей области ядра Microsoft Jet:
- True - Открытие базы данных для монопольного доступа.
- False - (По умолчанию). Открытие базы данных для общего доступа.
Для рабочей области ODBCDirect:
- dbDriverNoPrompt - Диспетчер драйвера ODBC использует строку подключения, определяемую аргументами имяБД и подключение. Если этих данных недостаточно, возникает ошибка выполнения.
- dbDriverPrompt - Диспетчер драйвера ODBC открывает диалоговое окно ODBC Data Sources, в котором отображаются данные, определяемые аргументами имяБД и подключение. Строка подключения образуется из имени источника данных, которое пользователь выбирает в диалоговых окнах, или, если имя источника данных не задано пользователем, используется стандартный источник данных.
- dbDriverComplete - (По умолчанию). Если в аргументах подключение и имяБД заданы все необходимые для подключения сведения, диспетчер драйвера ODBC использует строку из аргумента подключение. В противном случае выполняются действия, аналогичные задаваемым константой dbDriverPrompt.
- dbDriverCompleteRequired - Выполняются действия, аналогичные задаваемым константой dbDriverComplete, с тем лишь исключением, что драйвер ODBC отключает вывод приглашений на ввод сведений, не являющихся необходимыми для подключения.
толькоЧтение
Необязательный. Значение типа Variant (подтип Boolean), имеющее значение True, если база данных открывается только для чтения, и значение False (по умолчанию) при открытии базы данных с доступом для чтения и записи.
подключение
Необязательный. Выражение или переменная типа Variant (подтип String), содержащая сведения о подключении, в том числе пароли.
Замечания
При открытии базы данных она автоматически добавляется в семейство Databases. Кроме того, в рабочей области ODBCDirect создается объект Connection, соответствующий новому объекту Database. Этот объект Connection добавляется в семейство Connections того же объекта Workspace.
При указании аргумента имяБД необходимо иметь в виду следующее:
1. Если задается имя базы данных, уже открытой для монопольного доступа другим пользователем, возникает ошибка.
2. Если аргумент не задает имя существующей базы данных или допустимого источника данных ODBC, возникает ошибка.
3. Если значением аргумента является пустая строка (""), а аргумент подключение имеет значение "ODBC;", открывается диалоговое окно со списком имен всех зарегистрированных источников данных ODBC, в котором пользователь может выбрать нужную базу данных. 4. При открытии базы данных в рабочей области ODBCDirect с указанием имени источника данных в аргументе подключение пользователь имеет возможность задать в аргументе имяБД произвольную строку, которая в дальнейшем может использоваться в программах для ссылки на базу данных. Значение аргумента подключение образую два компонента: тип базы данных, за которым после точки с запятой (;) следуют необязательные аргументы. Указание типа базы данных, например, "ODBC;" или "FoxPro 2.5;" является обязательным. Необязательные аргументы, следующие в произвольном порядке, также разделяются символом точки с запятой. Одним из параметров может быть пароль (если пароль определен). Например:
"FoxPro 2.5; pwd=МойПароль"
Вызов метода NewPassword для объекта Database, не являющегося базой данных ODBCDirect, позволяет изменить параметр пароля, который задается в виде ";pwd=...". При указании строки источника необходимо определить аргументы параметры и толькоЧтение. Дополнительные сведения о синтаксисе см. в разделе справки для свойства Connect.
Для закрытия базы данных и удаления объекта Database из семейства Databases следует применить к этому объекту метод Close.
При подключении ядра Microsoft Jet к источнику данных ODBC пользователь имеет возможность повысить быстродействие приложения, открывая объект Database, подключенный к источнику данных ODBC, вместо присоединения отдельных объектов TableDef к конкретным таблицам в источнике данных ODBC.
Пример
Следующая программа использует метод OpenDatabase для открытия одной базы данных Microsoft Jet и двух баз данных ODBC, подключенных к ядру Microsoft Jet.
Sub OpenDatabaseX()
Dim wrkJet As Workspace
Dim dbsNorthwind As Database
Dim dbsPubs As Database
Dim dbsPubs2 As Database
Dim dbsLoop As Database
Dim prpLoop As Property
' Создает объект Workspace Microsoft Jet.
Set wrkJet = CreateWorkspace("", "admin", "", dbUseJet)
' Открывает для монопольного доступа аргумент Database,
' представляющий сохраненную базу данных Microsoft Jet.
MsgBox "Открытие базы данных 'Борей'..."
Set dbsNorthwind = wrkJet.OpenDatabase("Борей.mdb", True)
' Открывает только для чтения объект Database,
' используя строку подключения.
MsgBox "Открытие базы данных 'Publishers'..."
Set dbsPubs = wrkJet.OpenDatabase("Publishers", dbDriverNoPrompt, True, "ODBC;DATABASE=pubs;UID=sa;PWD=;DSN=Publishers")
' Открывает только для чтения объект Database с вводом
' недостающих данных в диалоговое окно диспетчера
' драйвера ODBC.
MsgBox "Открытие копии базы данных 'Publishers'..."
Set dbsPubs2 = wrkJet.OpenDatabase("Publishers", dbDriverCompleteRequired, True, "ODBC;DATABASE=pubs;DSN=Publishers;")
' Отображает семейство Databases.
For Each dbsLoop In wrkJet.Databases
Debug.Print "Свойства объекта Database " & dbsLoop.Name & ":"
On Error Resume Next
' Отображает семейство Properties каждого
' объекта Database.
For Each prpLoop In dbsLoop.Properties
If prpLoop.Name = "Connection" Then
' Свойство фактически возвращает объект Connection.
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
wrkJet.Close
End Sub