ADOBC 连接仅在 Windows 10 台机器上失败

ADOBC Connection Fails on Windows 10 Machines Only

我刚开始使用 Access/VB(2 个月前开始),所以请多多包涵。

我继承了一个与 Oracle 有 ADODB 连接的数据库,该数据库在 Windows 7 台机器(总共 5 台)上运行完美,但在 [= 上测试时出现以下错误35=]10台机器(共2台)。 (所有机器都是 运行 Access 2010)。

Run-time Error '3709': The connection cannot be used to perform this operation. It is either closed or invalid in this context.

代码如下:

Public Function PTMNConnect() As ADODB.Connection
  Dim Cn As ADODB.Connection
  Dim Conn As String

  Conn = "DRIVER={Microsoft ODBC for Oracle};CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" & _
           "(HOST=host)(PORT=port))(CONNECT_DATA=(SERVICE_NAME=PROD)));uid=username;pwd=password"
  Set Cn = New ADODB.Connection

  With Cn
    .ConnectionString = Conn
    .CursorLocation = adUseServer
    .Open  '**Errors Out on Open**
  End With

  Set PTMNConnect = Cn
End Function

这两天我一直在绞尽脑汁到处寻找可能的解决方案,但没有成功。

根据我看到的其他帖子,我 tried/verified 到目前为止是这样的:

  1. 已验证 Oracle 客户端已安装
  2. 确保 Path 变量包含必要的路径
  3. 已验证引用和文件路径在所有机器上都相同

如果您能提供任何见解或参考资料,我们将不胜感激!

我想出了一个解决办法!

原来 Windows 7 和 Windows 10 有不同版本的 {Microsoft ODBC for Oracle} 驱动程序,我认为这是导致错误的原因。我决定使用 Oracle 提供的驱动程序(每台 PC 都相同)而不是 Microsoft 提供的驱动程序(我发现它有所不同)。

用以下代码替换上面的 Conn 字符串解决了我的问题。 (此路由需要现有的 DSN):

Conn = "DRIVER={Oracle in OraClient11g_home1}; Dbq=DSN_TNSServiceName; uid=username; pwd=password"