2017-07-14 219 views
0

任何人都可以請幫我理解爲什麼Microsoft.Ace.OLEDB.16.0在Office 2016 x86的Windows 10 x64上不起作用? 我得到運行時錯誤-2147467259 (80004005)使用下面的代碼被打開OLEDB 16.0連接時:Microsoft.Ace.OLEDB.16.0

Public Sub ValidityDateCheck_SRT_Templates() 

NameFile = "x" 

    sConn = "Provider=Microsoft.ACE.OLEDB.16.0;WSS;IMEX=1;RetrieveIds=Yes;" & _ 
     "DATABASE=" & sSHAREPOINT_SITE & ";" & _ 
     "LIST=" & sDEMAND_ROLE_GUID_ML & ";" 

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

With cn 
    .ConnectionString = sConn 
    .Open '--> **HERE I GET THE ERROR** 

End With 

Rs = "SELECT * FROM [Template Library];" 
rst.Open Rs, cn, adOpenStatic, adLockOptimistic 
Do Until rst.EOF 
    If Left(rst![Name], InStr(1, rst![Name], "#") - 1) = TemplateID Then 
     NameFile = rst![Name] 
     On Error GoTo Skip 
     ActualVdate = rst![Validity Date] 
     TransVdate = rst![Transition Period End] 
     Exit Do 
    Else 
     rst.MoveNext 
    End If 
Loop 
Skip: 
rst.Close 

的interesant部分是在調試,如果我用12.0,然後再改爲16.0並保存,它會打開它。然後,如果我重新打開文件,我會得到相同的錯誤。 請幫幫我吧。

+2

嘗試12.0。例如。 'Provider = Microsoft.ACE.OLEDB.12.0'請參閱:https://www.connectionstrings.com/sharepoint/ –

+0

感謝您的回答。我試圖使用12.0,但我也必須安裝Access數據庫引擎2010和訪問運行時2010才能工作。但是這不是一個解決方案,因爲有很多計算機和沒有AD來運行批量安裝。我必須做16.0工作。 – antonov

回答

-2

試試這個;

cn.Open「Provider = Microsoft.Ace.OLEDB.16.0;」 & _ 「Data Source =」& UserForm2.TextBox32.Text &「; Jet OLEDB:Database Password = 1101010; Persist Security Info = False;」

+0

請看看https://stackoverflow.com/help/how-to-answer – Kruser

+0

謝謝你的回答!我試過你的解決方案,但仍然無法正常工作。我得到同樣的錯誤。任何其他想法? – antonov

0

您使用的是VBA嗎?如果是這樣,請確保您在參考菜單上啓用了Microsoft ActiveX Data Objects 6.1 Library。

+0

是的,它已啓用。你曾經使用過OLEDB 16.0嗎?謝謝 – antonov

+0

試着把這段代碼Set cn = New ADODB.Connection 在NameFile =「x」之前設置rst = New ADODB.Recordset。是的,我正在使用OLEDB 16.0。 – romantique

相關問題