仅在Windows 10计算机上的ADOBC连接失败

时间:2016-03-17 16:27:35

标签: vba ms-access windows-7 windows-10 adodb

我使用Access / VB(2个月前开始)相当新,所以请耐心等待。

我继承了一个与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. 验证所有计算机上的引用和文件路径相同
  4. 您可能提供的任何见解或参考将不胜感激!

1 个答案:

答案 0 :(得分:2)

我能够解决这个问题!

事实证明,Windows 7和Windows 10有{Microsoft ODBC for Oracle}驱动程序的不同版本,我认为这是造成错误的原因。我决定使用Oracle提供的驱动程序(对于每台PC都保持不变)而不是微软提供的驱动程序(正如我所发现的那样)。

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

  

Conn =" DRIVER = {Oracle in OraClient11g_home1}; DBQ = DSN_TNSServiceName; UID =用户名; PWD =密码"