【问题标题】:ADOBC Connection Fails on Windows 10 Machines OnlyADOBC 连接仅在 Windows 10 机器上失败
【发布时间】:2016-07-04 03:29:31
【问题描述】:

我对使用 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. 已验证所有计算机上的引用和文件路径都相同

您可以提供的任何见解或参考将不胜感激!

【问题讨论】:

  • 当您遇到该错误时,向我们展示Conn 的值可能会很有用。您提到了一个“路径变量”。它在哪里以及如何使用?如果省略CursorLocation,你会得到不同的结果吗?
  • @HansUp 我已经为“Conn”添加了值。我尝试省略“CursorLocation”,它在 Windows 7 机器上运行良好,但在 Windows 10 机器上导致了同样的错误。安装 Oracle 客户端时,它会在环境变量的路径变量中添加两条 Oracle 文件夹路径。缺少这些路径会导致其中一台 Windows 7 机器出现错误,该错误在添加路径后已修复。

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


【解决方案1】:

我能想出一个解决办法!

事实证明,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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多