我想知道如何从Delphi XE 2连接到MS Access 2013数据库?我通常在MS Access 2010中使用“Provider = Microsoft.ACE.OLEDB.12.0”,但它在2013年不再有效了吗?任何想法?
答案 0 :(得分:1)
我刚刚在具有64位Access_2013的Windows_7计算机上测试了以下VBScript代码......
Option Explicit
Dim con, rst
Set con = CreateObject("ADODB.Connection")
con.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data source=C:\Users\Gord\Desktop\Database1.accdb;"
Set rst = CreateObject("ADODB.Recordset")
rst.Open "SELECT Field1 FROM Table1", con
Wscript.Echo rst("Field1").Value
rst.Close
Set rst = Nothing
con.Close
Set con = Nothing
Wscript.Echo "Done."
...它工作正常,所以我不相信你引用的Provider=
字符串是问题本身。您的设置必定存在其他问题。
比较两台Windows_7机器,一台使用64位Office_2010,另一台使用64位Office_2013,显示了一个重要区别:
具有64位Office_2010的计算机同时安装了32位和64位版本的Access数据库引擎(ACE)。
具有64位Office_2013的计算机只有 64位版本的ACE。没有32位版本的ACE。
重新运行我的VBScript测试证实了这一点:
C:\__tmp>c:\windows\system32\cscript.exe /nologo oledbTest.vbs
Hello
Done.
C:\__tmp>c:\windows\sysWOW64\cscript.exe /nologo oledbTest.vbs
C:\__tmp\oledbTest.vbs(4, 1) ADODB.Connection: Provider cannot be found. It may not be properly installed.
幸运的是,如果64位Office_2013的用户具有需要使用.accdb文件的32位应用程序,则可以从here下载并安装32位版本的ACE。
对于64位Windows上32位Office_2013的用户,我怀疑情况与32位Office_2010的用户相同:他们只有32位版本的ACE且无法安装64-位版本,除非他们先卸载32位Office。因此,如果您安装了32位Office并且想要运行需要使用.accdb文件的64位应用程序,那么我相信您“运气不好”。 (唉,我无法测试这个,因为我只能安装64位Office_2013。)