我想知道如何从 Delphi XE 2 连接到 MS Access 2013 数据库?我通常对 MS Access 2010 使用“Provider=Microsoft.ACE.OLEDB.12.0”,但它不再适用于 2013 年?任何的想法 ??
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 位应用程序,他们可以从这里下载并安装 32 位版本的 ACE。
对于64位Windows上32位Office_2013的用户,我怀疑情况和32位Office_2010的用户一样:他们只有32位版本的ACE,无法安装64位版本,除非他们首先卸载 32 位 Office。因此,如果您安装了 32 位 Office,并且想要运行需要处理 .accdb 文件的 64 位应用程序,那么我相信您“不走运”。(唉,我无法对此进行测试,因为我只有 64 位 Office_2013 安装可用。)