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

3
我对Access/VB的工作还比较新(两个月前开始),请多多包涵。
我继承了一个数据库,它与Oracle有一个ADODB连接,在已经测试过的Windows 7机器上运行良好(共5台),但在Windows 10机器上测试时出现以下错误(共2台)。 (所有机器都运行Access 2010)。
运行时错误“3709”:无法使用该连接执行此操作。 在此上下文中,它是关闭或无效的。
以下是代码:
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

我已经费尽心思并在过去两天里到处搜寻可能的解决方案,但都没有成功。
以下是我根据其他帖子尝试/验证的内容:
  1. 确认安装了Oracle客户端
  2. 确保Path变量包含必要的路径
  3. 验证所有机器上的引用和文件路径相同
如有任何见解或参考资料,您能提供将不胜感激!

1
当你遇到那个错误时,展示 Conn 的值可能会有用。你提到了一个“Path变量”。它在哪里以及如何使用?如果省略 CursorLocation,你是否会得到不同的结果? - HansUp
@HansUp 我已经添加了“Conn”的值。我尝试省略“CursorLocation”,在Windows 7机器上运行良好,但在Windows 10机器上导致相同的错误。 安装Oracle客户端时,它会将两个路径添加到环境变量中的Path变量中的Oracle文件夹中。缺少这些路径会导致Windows 7机器上出现错误,一旦添加了这些路径,问题就得到解决。 - RyanPfled
1个回答

4
我已经找到了解决方法!
原来,Windows 7 和 Windows 10 中的 {Microsoft ODBC for Oracle} 驱动程序版本不同,这可能是导致错误的原因。我决定使用由 Oracle 提供的驱动程序(每台计算机都相同),而不是由 Microsoft 提供的驱动程序(如我所发现,版本不同)。
将上面的 Conn 字符串替换为以下代码即可解决问题。 (此方法需要现有的 DSN):

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接