TableDefs.Connect 缺少分号:“ODBCDRIVER=”而不是“ODBC;DRIVER=”

问题描述 投票:0回答:1

今天早上刚刚注意到,当我尝试从 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

我尝试重新安装 Office,但得到相同的结果。

vba ms-access connection-string
1个回答
0
投票

您必须更新您的 MS Access 并且您使用的是版本 2312。这就是原因!正如您所注意到的,Microsoft 发布的更新中有一个错误,它弄乱了连接字符串。微软预计很快就会发布解决该问题的新更新。请参阅此链接了解更多信息:

https://www.accessforever.org/post/missing-semicolon-in-odbc-connect

© www.soinside.com 2019 - 2024. All rights reserved.