今天早上刚刚注意到,当我尝试从 VBA 中的 SQL Server 链接表获取连接字符串时,它以“ODBCDRIVER=”而不是“ODBC;DRIVER=”开头。我从当前链接表中获取字符串,用作 VBA 中 QueryDef 的连接字符串。缺少分号会导致 QueryDef 代码引发错误 3305:传递查询中的连接字符串无效。
这是我返回连接字符串的函数。它之前返回了一个有效的连接字符串,并且(据我记得)我没有进行任何更改。
Public Function GetObjectConnectString(ObjectName As String, ObjectType As String) As String
GetObjectConnectString = vbNullString
Dim ConnectString As String
Select Case ObjectType
Case "Table"
ConnectString = db.TableDefs(ObjectName).Connect
Case "Query"
ConnectString = db.QueryDefs(ObjectName).Connect
End Select
GetObjectConnectString = ConnectString
End Function
这是预期的行为吗?我只需要通过添加分号来处理此响应?
使用: 适用于 Microsoft 365 MSO 的 Microsoft Access(版本 2312 内部版本 16.0.17126.20078)64 位 Microsoft Visual Basic 应用程序 7.1 版本 1131
编辑
这是 db 函数:
Private my_db As DAO.Database
Public Function db() As DAO.Database
Set db = my_db
ErrEx.Catch 91, 3420 'no longer set
Set my_db = CurrentDb
Resume
End Function
您必须更新您的 MS Access 并且您使用的是版本 2312。这就是原因!正如您所注意到的,Microsoft 发布的更新中有一个错误,它弄乱了连接字符串。微软预计很快就会发布解决该问题的新更新。请参阅此链接了解更多信息:
https://www.accessforever.org/post/missing-semicolon-in-odbc-connect