我試圖鏈接Oracle表使用下面的Visual Basic 6.0代碼訪問:使用VB6在Access中鏈接到Oracle表:錯誤3000?
Dim objApp, objDB, objTable As Object
Dim strFile, strConnect, strLocalTable, strServerTable As String
strFile = "C:\path\to\base.mdb"
strLocalTable = "local"
strServerTable = "BASE.TABLE_NAME"
strConnect = "ODBC;Driver={Microsoft ODBC for Oracle};ConnectString=name.world;Uid=username;Pwd=password;"
Set objApp = CreateObject("Access.Application")
objApp.OpenCurrentDatabase strFile
Set objDB = objApp.CurrentDb()
Set objTable = objDB.CreateTableDef(strLocalTable)
objTable.Connect = strConnect
objTable.SourceTableName = strServerTable
objDB.TableDefs.Append objTable 'Generates 3000 Error
objDB.TableDefs.Refresh
在第二到最後一排,我得到(鬆散從瑞典由我翻譯)「運行時錯誤3000:保留錯誤(-7778)。這個錯誤沒有消息。「
任何想法,爲什麼這可能是?我被告知此代碼之前已經工作過,所以它可能與更新的軟件有某種版本衝突。數據庫採用Access 2000格式,並且Access 2013安裝在計算機上(但是,保存數據庫爲Access 2013不起作用)。或者,連接字符串可能有問題嗎?
編輯:我在連接字符串中使用DSN嘗試:
strConnect = "ODBC;Driver={Microsoft ODBC for Oracle};DSN='test';"
我得到了同樣的錯誤,即使我可以使用非常DSN的表中訪問手動鏈接。
另外(正如我在評論中指出的),更改連接字符串中的某些信息(如故意提供不正確的用戶名)會導致不同的錯誤(3146:連接失敗)。這使我相信與數據庫的連接起作用,因爲它似乎能夠區分好的和壞的證書。
該連接字符串看起來不正確 - 特別是'ConnectString'應該是格式'(DESCRIPTION =(ADDRESS =(PROTOCOL = TCP)(HOST = server) (PORT = 7001))(CONNECT_DATA =(SERVICE_NAME = MYDB)))'。 [請點擊此處](https://www.connectionstrings.com/microsoft-odbc-for-oracle/)獲取正確的格式。祝你好運。 –
謝謝你的回覆!我試圖從tnsnames.ora文件中複製你建議格式的字符串,但它沒有幫助。相反,我得到了另一個錯誤消息(3151:無法連接到...)。對於鏈接到的頁面上的所有格式,我都會得到同樣的錯誤。 我認爲問題中的格式適用於連接到數據庫,因爲當我更改ConnectString,Uid或Pwd的值以更改incorect時,它會給我另一個錯誤消息(3146:連接失敗)。 – Anders