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


Метод Workspace.OpenConnection (DAO)

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

Синтаксис

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

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

Параметры

Имя

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

Тип данных

Описание

Name

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

String

Строковое выражение. См. обсуждение в разделе Примечания.

Options

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

Variant

задает различные параметры подключения, как указано в разделе Примечания. На основе этого значения диспетчер драйверов ODBC запрашивает у пользователя сведения о подключении, такие как имя источника данных (DSN), имя пользователя и пароль.

ReadOnly

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

Variant

Значение true , если подключение должно быть открыто для доступа только для чтения, и false , если подключение должно быть открыто для доступа на чтение и запись (по умолчанию).

Connect

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

Variant

строка подключения ODBC. Сведения о конкретных элементах и синтаксисе этой строки см. в свойстве Connect . Требуется предварительное значение "ODBC;".

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

Connection

Замечания

Используйте метод OpenConnection , чтобы установить подключение к источнику данных ODBC из рабочей области ODBCDirect. Метод OpenConnection аналогичен, но не эквивалентен OpenDatabase. Отличие main заключается в том, что OpenConnection доступен только в рабочей области ODBCDirect.

Если указать зарегистрированное имя источника данных ODBC (DSN) в аргументе connect, аргумент name может быть любой допустимой строкой, а также предоставить свойство Name для объекта Connection . Если допустимое имя DSN не включено в аргумент connect, имя должно ссылаться на допустимое имя DSN ODBC, которое также будет свойством Name . Если ни имя, ни соединение не содержат допустимого DSN, диспетчер драйверов ODBC можно задать (с помощью аргумента options), чтобы заставить пользователя ввести необходимые сведения о подключении. ИМЯ DSN, предоставленное через запрос, затем предоставляет свойство Name .

Аргумент options определяет, следует ли и когда запрашивать у пользователя установить подключение, а также следует ли открывать подключение асинхронно. Можно использовать одну из следующих констант.

Константа

Описание

dbDriverNoPrompt

Диспетчер драйверов ODBC использует строка подключения, предоставленные в dbname и connect. Если вы не предоставите достаточных сведений, возникает ошибка во время выполнения.

dbDriverPrompt

Диспетчер драйверов ODBC отображает диалоговое окно Источники данных ODBC , в котором отображаются все соответствующие сведения, указанные в dbname или connect. Строка подключения состоит из имени DSN, выбранного пользователем в диалоговых окнах, или, если пользователь не указывает dsn, используется имя DSN по умолчанию.

dbDriverComplete

Значение, используемое по умолчанию. Если аргумент connect содержит все необходимые сведения для завершения подключения, диспетчер драйверов ODBC использует строку в connect. В противном случае он будет вести себя так же, как при указании dbDriverPrompt.

dbDriverCompleteRequired

Этот параметр работает так, как dbDriverComplete , за исключением того, что драйвер ODBC отключает запросы на любые сведения, не необходимые для завершения подключения.

dbRunAsync

Выполните метод асинхронно. Эту константу можно использовать с любой из других констант параметров .

OpenConnection возвращает объект Connection , содержащий сведения о подключении. Объект Connection аналогичен объекту Database . Основное отличие заключается в том, что объект Database обычно представляет базу данных, хотя его можно использовать для представления подключения к источнику данных ODBC из рабочей области Microsoft Access.

Пример

В этом примере метод OpenConnection с разными параметрами используется для открытия трех разных объектов Connection .

Sub OpenConnectionX() 
 
 Dim wrkODBC As Workspace 
 Dim conPubs As Connection 
 Dim conPubs2 As Connection 
 Dim conPubs3 As Connection 
 Dim conLoop As Connection 
 
 ' Create ODBCDirect Workspace object. 
 Set wrkODBC = CreateWorkspace("NewODBCWorkspace", _ 
 "admin", "", dbUseODBC) 
 
 ' Open Connection object using supplied information in 
 ' the connect string. If this information were 
 ' insufficient, you could trap for an error rather than 
 ' go to an ODBC Driver Manager dialog box. 
 MsgBox "Opening Connection1..." 
 
 ' 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 conPubs = wrkODBC.OpenConnection("Connection1", _ 
 dbDriverNoPrompt, , _ 
 "ODBC;DATABASE=pubs;DSN=Publishers") 
 
 ' Open read-only Connection object based on information 
 ' you enter in the ODBC Driver Manager dialog box. 
 MsgBox "Opening Connection2..." 
 Set conPubs2 = wrkODBC.OpenConnection("Connection2", _ 
 dbDriverPrompt, True, "ODBC;DSN=Publishers;") 
 
 ' Open read-only Connection object by entering only the 
 ' missing information in the ODBC Driver Manager dialog 
 ' box. 
 MsgBox "Opening Connection3..." 
 Set conPubs3 = wrkODBC.OpenConnection("Connection3", _ 
 dbDriverCompleteRequired, True, _ 
 "ODBC;DATABASE=pubs;DSN=Publishers;") 
 
 ' Enumerate the Connections collection. 
 For Each conLoop In wrkODBC.Connections 
 Debug.Print "Connection properties for " & _ 
 conLoop.Name & ":" 
 
 With conLoop 
 ' Print property values by explicitly calling each 
 ' Property object; the Connection object does not 
 ' support a Properties collection. 
 Debug.Print " Connect = " & .Connect 
 ' Property actually returns a Database object. 
 Debug.Print " Database[.Name] = " & _ 
 .Database.Name 
 Debug.Print " Name = " & .Name 
 Debug.Print " QueryTimeout = " & .QueryTimeout 
 Debug.Print " RecordsAffected = " & _ 
 .RecordsAffected 
 Debug.Print " StillExecuting = " & _ 
 .StillExecuting 
 Debug.Print " Transactions = " & .Transactions 
 Debug.Print " Updatable = " & .Updatable 
 End With 
 
 Next conLoop 
 
 conPubs.Close 
 conPubs2.Close 
 conPubs3.Close 
 wrkODBC.Close 
 
End Sub 
 

В этом примере демонстрируется объект Connection и коллекция Connections путем открытия объекта Базы данных Microsoft Access и двух объектов ODBCDirect Connection и перечисления свойств, доступных каждому объекту.

Sub ConnectionObjectX() 
 
 Dim wrkAcc as Workspace 
 Dim dbsNorthwind As Database 
 Dim wrkODBC As Workspace 
 Dim conPubs As Connection 
 Dim conPubs2 As Connection 
 Dim conLoop As Connection 
 Dim prpLoop As Property 
 
 ' Open Microsoft Access Database object. 
 Set wrkAcc = CreateWorkspace("NewWorkspace", _ 
 "admin", "", dbUseJet) 
 Set dbsNorthwind = wrkAcc.OpenDatabase("Northwind.mdb") 
 
 ' Create ODBCDirect Workspace object and open Connection 
 ' objects. 
 Set wrkODBC = CreateWorkspace("NewODBCWorkspace", _ 
 "admin", "", dbUseODBC) 
 
 ' Note: The DSNs referenced below must be configured to 
 ' use Microsoft Windows NT Authentication Mode to 
 ' authorize user access to the Microsoft SQL Server. 
 Set conPubs = wrkODBC.OpenConnection("Connection1", , , _ 
 "ODBC;DATABASE=pubs;DSN=Publishers") 
 
 Set conPubs2 = wrkODBC.OpenConnection("Connection2", , _ 
 True, "ODBC;DATABASE=pubs;DSN=Publishers") 
 
 Debug.Print "Database properties:" 
 
 With dbsNorthwind 
 ' Enumerate Properties collection of Database object. 
 For Each prpLoop In .Properties 
 On Error Resume Next 
 Debug.Print " " & prpLoop.Name & " = " & _ 
 prpLoop.Value 
 On Error GoTo 0 
 Next prpLoop 
 End With 
 
 ' Enumerate the Connections collection. 
 For Each conLoop In wrkODBC.Connections 
 Debug.Print "Connection properties for " & _ 
 conLoop.Name & ":" 
 
 With conLoop 
 ' Print property values by explicitly calling each 
 ' Property object; the Connection object does not 
 ' support a Properties collection. 
 Debug.Print " Connect = " & .Connect 
 ' Property actually returns a Database object. 
 Debug.Print " Database[.Name] = " & _ 
 .Database.Name 
 Debug.Print " Name = " & .Name 
 Debug.Print " QueryTimeout = " & .QueryTimeout 
 Debug.Print " RecordsAffected = " & _ 
 .RecordsAffected 
 Debug.Print " StillExecuting = " & _ 
 .StillExecuting 
 Debug.Print " Transactions = " & .Transactions 
 Debug.Print " Updatable = " & .Updatable 
 End With 
 
 Next conLoop 
 
 dbsNorthwind.Close 
 conPubs.Close 
 conPubs2.Close 
 wrkAcc.Close 
 wrkODBC.Close 
 
End Sub