更改VBA ADODB连接字符串,需要更具体

时间:2014-09-18 19:12:14

标签: excel oracle vba excel-vba adodb

我有一个使用以下连接类型连接的工作excel宏:

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

    cn.Open ( _
    "User ID=userid" & _
    ";Password=pass" & _
    ";Data Source=blank.blank.com" & _
    ";Provider=MSDAORA.1")

我可以在网络的一个部分连接但是当我尝试在另一台计算机上使用相同的宏时,我无法再连接。我的想法是存在网络问题,我需要“更具体”。因此,经过一些谷歌搜索后,我遇到了其他利用IP和端口名称的数据连接字符串。

Driver={Microsoft ODBC for Oracle};
Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=199.199.199.199)(PORT=1523))(CONNECT_DATA=(SID=dbName)));
Uid=myUsername;Pwd=myPassword;

来自https://www.connectionstrings.com/microsoft-odbc-for-oracle/

关注微软documentation后,我得到以下内容:

With cn
    .Provider = "MSDAORA.1"
    .ConnectionString = "Driver={Microsoft ODBC for Oracle};" & _
                        "Server=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=1.1.1.1)(PORT=xxxx))(CONNECT_DATA=(SID=DB)));" & _
                        "Uid=userid;Pwd=pass;"
    .Open
End With

但是我收到错误:ORA-12560 TNS:Protocol adapter error

有些解决方案表明我应该重启数据库,但它正在运行!我连接到它就好了。

有没有人有更好的方式连接“更具体”,这可能有助于我的网络问题,或者可能能够帮助我修复我的新连接方式?

2 个答案:

答案 0 :(得分:0)

我一直使用你最初使用的选项。它在一台机器上运行而在另一台机器上不起作用这一事实向我表明您没有在第二台计算机上安装MSDAORA驱动程序。机器要求机器上存在ODBC驱动程序才能使代码正常运行。

转到ODBC并确保可以通过第二台计算机上的ODBC面板创建测试连接,以确保ODBC可用于MSDAORA驱动程序。

我看到使用Microsoft ODBC for Oracle时没有测试连接。有用于Oracle驱动程序。测试它的一种方法是使用您创建的Microsoft ODBC连接打开MS Access并创建链接表。它将提示您输入密码,如果成功,您将链接该表,并知道它正在运行,或者它会给您一个ODBC错误,并且您将知道它不是。

或者您可以使用Oracle驱动程序,这需要安装Oracle客户端驱动程序,并更改连接信息以反映该驱动程序而不是MS驱动程序。

答案 1 :(得分:0)

这对我来说很好:

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset

cn.Open ( _
  "User ID=userid" & _
  ";Password=pass" & _
  ";Data Source=blank.blank.com" & _
  ";Provider=MSDAORA.1")