我懷疑根本沒有辦法做到你所描述的使用OLEDB。
我測試了以下VBA代碼和它的工作:
Sub odbcTest()
Dim cdb As DAO.Database, sql As String
Set cdb = CurrentDb
sql = _
"SELECT ID, LastName INTO myContacts " & _
"FROM [ODBC;Driver={SQL Server Native Client 10.0};Server=.\SQLEXPRESS;Database=myDb;Trusted_Connection=yes;].dbo.myContacts"
cdb.Execute sql, dbFailOnError
End Sub
然後,我測試了(我希望會)的OLEDB相當於並將其與你有同樣的錯誤(「找不到失敗。安裝ISAM「)
Sub oledbTest()
Dim cdb As DAO.Database, sql As String
Set cdb = CurrentDb
sql = _
"SELECT ID, LastName INTO myContacts " & _
"FROM [OLEDB;Provider=SQLNCLI10;Server=.\SQLEXPRESS;Database=myDb;Trusted_Connection=yes;].dbo.myContacts"
cdb.Execute sql, dbFailOnError
End Sub
但是請注意括號內ODBC;
和OLEDB;
前綴:他們並不需要建立在‘正常’的連接。下面的代碼工作...
Sub adoTest()
Dim con As Object
Const sqlInstance = ".\SQLEXPRESS"
Set con = CreateObject("ADODB.Connection")
con.Open "Driver={SQL Server Native Client 10.0};Server=" & sqlInstance & ";Database=myDb;Trusted_Connection=yes;"
MsgBox "ODBC connection to " & sqlInstance & " established."
con.Close
Set con = Nothing
End Sub
...但是當我添加一個ODBC;
子句的連接字符串的開頭...
Sub adoTest()
Dim con As Object
Const sqlInstance = ".\SQLEXPRESS"
Set con = CreateObject("ADODB.Connection")
con.Open "ODBC;Driver={SQL Server Native Client 10.0};Server=" & sqlInstance & ";Database=myDb;Trusted_Connection=yes;"
MsgBox "ODBC connection to " & sqlInstance & " established."
con.Close
Set con = Nothing
End Sub
...它失敗,「[微軟] [ODBC驅動程序管理器]未找到數據源名稱並且沒有指定默認驅動程序「。
所以,第一個Sub odbcTest()
碼樣本中ODBC;
前綴上面是一個線索,該FROM [ODBC;...]
方法僅僅是一個訪問快捷方式從ODBC數據源拉數據,而無需顯式地創建鏈接表。 (方括號中那東西會是TableDef
對象的.Connect
屬性鏈接表。)
因此,因爲據我所知訪問只支持ODBC鏈接表(而不是OLEDB鏈接表),使用該使用OLDEB的方法將不起作用。