2016-04-27 189 views
0

每個人,從Excel到Oracle的OLEDB連接問題

過去兩天VBA問題一直在困擾着我。我在Excel中有一個基於宏的模型,其數據集通過OLEDB從Oracle購買到電子表格中。爲了說明這個問題,我簡單地在模型中創建了兩個函數。一個使用ODBC(「odbc」),另一個使用OLEDB(「OraOLEDB」)。該代碼上週運行良好,並沒有改變。

但是,現在,我收到一條錯誤消息,指出「運行時錯誤'424':對象在我在子」OraOLEDB「中執行行」conn.Open strCon「時所需的對象。無法建立連接數據庫!所以當我試圖用這行代碼建立與數據庫的連接時,它失敗了,有趣的是,通過ODBC,可以建立一個連接,在「odbc」子行中的「conn.Open strCon」行「執行成功,我可以建立到數據庫的連接

我沒有改變Excel模型中的任何東西,但最近我確實有一堆windows更新,我不知道是否會損壞任何東西。認爲它可能有,我不想使用ODBC連接的原因是它顯着慢,我得到運行時間1使用OLEDB的速度更快。請讓我知道你是否可以幫忙。


Sub odbc() 
Dim conn As Object 
Dim strCon As String 

strCon = "Driver={Microsoft ODBC for Oracle}; 
      CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP) 
      (HOST=xxx)(PORT=1521)) 
      (CONNECT_DATA=(SERVICE_NAME=xxx))); 
      uid=xxx;pwd=xxx;" 

Set conn = CreateObject("ADODB.Connection") 

conn.Open strCon 

End Sub 

Sub OraOLEDB() 
Dim conn As Object 
Dim strCon As String 

strCon = "Provider=OraOLEDB.Oracle; 
      Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) 
      (HOST = xxx)(PORT = 1521)) 
      (CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = xxx))); 
      User Id=xxx;Password=xxx" 

Set conn = CreateObject("ADODB.Connection") 

conn.Open strCon 

回答

1

這意味着Set conn = CreateObject("ADODB.Connection")什麼都不返回。檢查ADODB.dll註冊。或者,您可以使用

Dim conn As ADODB.Connection 
Set conn = New ADODB.Connection 

並且您會看到在您編輯腳本時是否可以使用ADODB而不是等待運行時錯誤。

+0

Serg。通過這種方式定義變量來修復它。謝謝。 – jp3nyc

+0

@ jp3nyc:請標記幫助您最好的答案,以便我們的讀者確切知道哪個答案可以解決您的問題。 – Rachcha

2

我看到的是模n-ast- FDB1爲OLEDB連接的主機。 ...而對於ODBC連接,你有modn-ast-tdb1。 ...主持人不應該是一樣的嗎?

+0

感謝mathguy。更改。 – jp3nyc