2010-04-15 20 views
0

我試圖連接到VBScript中的MS Access數據庫鏈接表。它在第一次連接時很好地連接,但如果我關閉該連接並在同一個腳本中打開一個新連接,它會給我一個錯誤。使用ACE/JET驅動程序無法連接兩次到鏈接表

test.vbs(13, 1) Microsoft Office Access Database Engine: 
ODBC--connection to '{Oracle in OraClient10g_home1}DB_NAME' failed. 

這是一些觸發錯誤的代碼。 TABLE_1是test.mdb文件中的一個ODBC鏈接表。

Dim cnn, rs 

Set cnn = CreateObject("ADODB.Connection") 
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=test.mdb" 

Set rs = cnn.Execute("SELECT * FROM [TABLE_1]") 
rs.Close 
cnn.Close 

Set cnn = CreateObject("ADODB.Connection") 
cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=test.mdb" 

Set rs = cnn.Execute("SELECT * FROM [TABLE_1]") '' crashes here 
rs.Close 
cnn.Close 

如果我嘗試訪問普通Access表,則不會發生此錯誤。現在我認爲這是Oracle ODBC驅動程序中的一個錯誤。

+1

TABLE_1是一個鏈接的Oracle表,yesno?那麼爲什麼你使用Access打開它,爲什麼不使用Oracle(http://www.connectionstrings.com/oracle)? – Fionnuala 2010-04-16 09:32:55

+0

我想使用SELECT INTO查詢將數據複製到Access中。 – Tmdean 2010-04-16 15:10:00

+1

我想你需要的東西的行︰strSQL =「插入INTO [ODBC; DSN = DSNName;]。NameOfOracleTable」_ &「Select AnyField As NameOfOracleField FROM AnyAccessTable;」或相反亦然。 – Fionnuala 2010-04-16 16:32:03

回答

0

我剛剛嘗試過使用一些表我已經鏈接到SQL服務器,它工作得很好(對不起,我沒有一個Oracle數據庫來測試)但是我有幾件事情要你去嘗試。

首先在DIM線上,您沒有爲cnn和rs指定類型。這通常是不好的做法,所以把它改成這樣的東西

Dim cnn as ADODB.Connection 
Dim rs as ADODB.Recordset 

其次,你需要關閉語句之間的連接嗎?最好保持開放並重用它。另外,作爲習慣中的力量我也趨於關閉我打開任何對象,也將它們設置爲無,即

Set cnn=nothing 

如果你必須關閉並重新打開它試圖將其設置爲任何看看是否有幫助

+0

對不起,看到了ms-access標籤,並認爲他正在使用VBA – 2010-04-16 13:51:45

+0

感謝您的建議。我可能最終不得不爲整個腳本使用單個Connection,但這對我所做的事情來說很麻煩。在關閉後將Connection設置爲Nothing不能解決問題。另外,使用單獨的變量來存儲不同的連接也沒有修復它。 – Tmdean 2010-04-16 15:21:44

+0

Jet/ACE更快捷,連接更少。您可以考慮根據您正在使用的工具的具體情況調整慣常的練習。 – 2010-04-16 18:45:55

相關問題