Workspace.OpenConnection 方法 (DAO)

适用于:Access 2013、Office 2013

语法

表达式 。OpenConnection (名称选项ReadOnlyConnect)

表达式 一个表示 Workspace 对象的变量。

参数

名称

必需/可选

数据类型

说明

Name

必需

字符串

字符串表达式。 请参阅“说明”中的讨论。

选项

可选

Variant

根据“说明”中的指定设置连接的各个选项。 ODBC 驱动程序管理器根据此值向用户提示有关连接的信息,例如数据源名称 (DSN)、用户名和密码。

ReadOnly

可选

Variant

如果连接针对只读访问权限打开,则为 True;如果连接针对读/写访问权限打开,则为 False(默认值)。

Connect

可选

Variant

一个 ODBC 连接字符串。 有关此字符串的特定元素和语法,请参阅 Connect 属性。 需要前缀“ODBC;”。

返回值

Connection

备注

使用 OpenConnection 方法可在 ODBCDirect 工作区中建立与 ODBC 数据源的连接。 OpenConnection 方法类似于 OpenDatabase,但不完全相同。 主要差别在于 OpenConnection 只在 ODBCDirect 工作区中可用。

如果在 connect 参数中指定已注册的 ODBC 数据源名称 (DSN) ,则 name 参数可以是任何有效的字符串,并且还将为 Connection 对象提供 Name 属性。 如果连接参数中不包含有效的 DSN,则 name 必须引用有效的 ODBC DSN,该 DSN 也将是 Name 属性。 如果名称或连接均不包含有效的 DSN,可以通过 options 参数) 设置 ODBC 驱动程序管理器 (,以提示用户输入所需的连接信息。 然后,通过提示而提供的 DSN 将会提供 Name 属性。

options 参数确定是否以及何时提示用户建立连接,以及是否异步打开连接。 可以使用下列常量之一。

常量

说明

dbDriverNoPrompt

ODBC 驱动程序管理器使用 dbnameconnect 中提供的连接字符串。 如果不提供足够的信息,将发生运行时错误。

dbDriverPrompt

ODBC 驱动程序管理器显示 “ODBC 数据源 ”对话框,其中显示 dbnameconnect 中提供的任何相关信息。 连接字符串由用户通过对话框选择的 DSN 组成,如果用户未指定 DSN,则使用默认 DSN。

dbDriverComplete

默认值。 如果 connect 参数包括完成连接所需的所有必要信息,ODBC 驱动程序管理器将使用 connect 中的字符串。 否则,其表现与指定了 dbDriverPrompt 时相同。

dbDriverCompleteRequired

此选项的表现类似于 dbDriverComplete,不同之处在于,ODBC 驱动程序将禁止提示完成连接所不需要的任何信息。

dbRunAsync

异步执行方法。 此常量可以与其他任何 options 常量一起使用。

OpenConnection 返回包含有关连接的信息的 Connection 对象。 Connection 对象与 Database 对象类似。 主要差别在于 Database 对象通常代表数据库,尽管也可以使用它代表在 Microsoft Access 工作区中与 ODBC 数据源建立的连接。

示例

以下示例使用采用不同参数的 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 
 

以下示例通过打开一个 Microsoft Access Database 对象和两个 ODBCDirect Connection 对象,并列出每个对象可用的属性,来演示 Connection 对象和 Connections 集合。

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