2016-03-17 48 views
2

我对使用Access/VB(2个月前开始)非常陌生,所以请耐心等待。ADOBC连接在Windows 10计算机上失败

我继承了一个与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'的值。你提到了一个*“路径变量”*。在哪里以及如何使用?如果你省略'CursorLocation',你会得到不同的结果吗? – HansUp

+0

@HansUp我已经添加了'Conn'的值。我尝试省略'CursorLocation',它在Windows 7机器上运行良好,但导致在Windows 10机器上出现相同的错误。 安装Oracle Client时,它会在环境变量的Path变量中添加两条到Oracle文件夹的路径。缺少这些路径会导致在添加路径后修复的某个Windows 7计算机出现错误。 – RyanPfled

回答

2

我能够想出一个解决这个!

事实证明,Windows 7和Windows 10有不同版本的{Microsoft ODBC for Oracle}驱动程序,我相信这是导致错误的原因。我决定使用Oracle提供的驱动程序(对于每台PC都是一样的),而不是微软提供的驱动程序(我发现这个驱动程序有所不同)。

用以下代码替换Conn字符串,使用以下代码修复了我的问题。 (这条路线需要现有的DSN):

康恩= “DRIVER = {甲骨文OraClient11g_home1}; DBQ = DSN_TNSServiceName; UID =用户名; PWD =密码”

相关问题