【问题标题】:How to access Microsoft Access 2013 database from delphi XE2?如何从 delphi XE2 访问 Microsoft Access 2013 数据库?
【发布时间】:2023-03-23 05:46:01
【问题描述】:

我想知道如何从 Delphi XE 2 连接到 MS Access 2013 数据库?我通常对 MS Access 2010 使用“Provider=Microsoft.ACE.OLEDB.12.0”,但它在 2013 年不再适用?有什么想法吗??

【问题讨论】:

    标签: ms-access delphi-xe2 dataprovider office-2013 ms-access-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 位应用程序,他们可以从 here 下载并安装 ACE 的 32 位版本。

    32位Office_2013的用户在64位Windows下,我怀疑情况和32位Office_2010的用户一样:他们只有32位版本的ACE,无法安装64位-位版本,除非他们先卸载 32 位 Office。因此,如果您安装了 32 位 Office,并且想要运行需要使用 .accdb 文件的 64 位应用程序,那么我相信您“不走运”。 (唉,我无法对此进行测试,因为我只有 64 位 Office_2013 安装可用。)

    【讨论】:

    • 安装 MS Access 2013 后不再有 "Provider=Microsoft.ACE.OLEDB.12.0" !!!
    • @MS 是的,有。我的回答证明了这一点。
    • 找不到错误消息提供程序,当我在同一台机器上使用 ms access 2010 时它正在工作,但在我删除它并安装 ms access 2013 后它消失了,我无法再使用此提供程序或连接到 ms 访问数据库!!
    • @MS 查找文件C:\Program Files\Common Files\Microsoft Shared\OFFICE15\ACEOLEDB.DLLC:\Program Files (x86)\Common Files\microsoft shared\OFFICE15\ACEOLEDB.DLL。你能找到任何一个吗?两个都?没有?
    • @MS 您拥有 64 位版本的 ACE,但没有 32 位版本。您可以通过上面(修订)答案中的链接下载并安装 32 位版本。
    猜你喜欢
    • 2015-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多