如何确定Access数据库中使用的ODBC连接名称
Access查询正在调用的ODBC连接名称的方法
方法1:查看链接表的数据源属性
- 打开Access数据库,在左侧导航窗格找到带小地球图标的ODBC链接表
- 右键点击该表,选择设计视图,弹出安全提示时点击确定
- 按下
Alt + Enter调出属性窗口,找到连接字符串字段,字段内容里ODBC;DSN=后面跟着的内容就是当前调用的ODBC连接名称
方法2:用VBA代码批量枚举所有ODBC连接
如果需要一次性查询所有链接表关联的ODBC连接,直接运行以下VBA代码即可:
Sub ListAllODBCDSN() Dim tdf As TableDef For Each tdf In CurrentDb.TableDefs ' 筛选ODBC类型的链接表 If InStr(1, tdf.Connect, "ODBC", vbTextCompare) > 0 Then Debug.Print "关联表名:" & tdf.Name If InStr(1, tdf.Connect, "DSN=") > 0 Then Debug.Print "ODBC连接名:" & Split(Split(tdf.Connect, "DSN=")(1), ";")(0) & vbCrLf Else Debug.Print "无DSN直连,连接参数:" & tdf.Connect & vbCrLf End If End If Next End Sub
- 代码运行后按
Ctrl + G打开立即窗口,就能看到所有ODBC连接的关联信息 - 如果你使用的是无DSN的直连配置,不会返回单独的ODBC连接名,会直接输出完整连接参数
方法3:查询运行时临时活跃的ODBC连接
如果需要查询当前会话中临时打开的、未绑定到链接表的ODBC连接,运行以下代码:
Sub ListActiveODBCConnections() Dim cnt As ADODB.Connection For Each cnt In CurrentProject.AccessConnection.Connections If InStr(1, cnt.ConnectionString, "ODBC", vbTextCompare) > 0 Then Debug.Print "活跃连接参数:" & cnt.ConnectionString If InStr(1, cnt.ConnectionString, "DSN=") > 0 Then Debug.Print "对应的ODBC连接名:" & Split(Split(cnt.ConnectionString, "DSN=")(1), ";")(0) & vbCrLf End If End If Next End Sub
注意:运行该代码前如果提示“用户定义类型未定义”,需要在VBA编辑器的「工具」->「引用」中勾选Microsoft ActiveX Data Objects x.x Library即可
内容的提问来源于stack exchange,提问作者pithhelmet
相关产品推荐
相关产品推荐

