【问题标题】:Delphi 7 and Microsoft Access 2013 "Provider cannot be found. It may not be properly installed."Delphi 7 和 Microsoft Access 2013“找不到提供程序。它可能没有正确安装。”
【发布时间】:2015-10-28 13:15:04
【问题描述】:

我在尝试链接到 Microsoft Access 2013 数据库的程序时遇到问题。在程序中,我在将数据库链接到 Delphi 的单元中有以下代码:

unit udbSrc;

interface

Uses DB, ADODB, Forms;

Var DBDataBase : TADOQuery;

Procedure OpenDB;

implementation

Procedure OpenDB;
Begin
DBDataBase := TADOQuery.Create(Application);
DBDataBase.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=' + '''DataBase.accdb'';Persist Security Info=False';
end;

end.

在主单元中,单击一个按钮,我有以下代码:

DBDataBase.Close;
DBDataBase.SQL.Text := 'Select * From tblPlayerInfo';
DBDataBase.ExecSQL;
DBDataBase.Open
DBDataBase.First;

当我单击按钮时,程序没有运行并显示以下错误消息:

找不到提供程序。它可能没有正确安装。

它识别出这行代码中的错误:

DBDataBase.ExecSQL;

我已经研究并下载并安装了AccessDatabaseEngine_x64,但没有任何效果。如果有人可以请提出解决方案。

【问题讨论】:

  • 在我看来您正在向数据源添加引号,这在连接字符串 connectionstrings.com/access 中并不常见
  • @Fionnuala 在以前安装了 MS Access 2010 的计算机上的程序中,我使用了完全相同的连接字符串,唯一的区别是而不是说:DBDataBase.ConnectionString := 'Provider=Microsoft.ACE。 OLEDB.12.0;数据源='+'''DataBase.accdb'';Persist Security Info=False';我会说 DBDataBase.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + '''DataBase.mdb'';Persist Security Info=False';结束;
  • 您必须安装 32 位版本的 ACE。顺便说一句,您不应该将ExecSQL'SELECT' 语句一起使用。使用Open
  • @kobik 谢谢。问题在于我运行的是 64 位版本的 ACE,而我应该运行的是 32 位版本。

标签: delphi delphi-7 ado ms-access-2013


【解决方案1】:

您说您已经下载并安装了 AccessDatabaseEngine_x64,但这是 64 位提供程序。 Delphi 7 生成 32 位可执行文件,因此需要 32 位提供程序。这就是您收到未找到提供程序错误的原因。未安装所需的 32 位提供程序。

Download and install AccessDatabaseEngine.exe不是 _x64 版本)获取您需要的 32 位提供程序。

通常,当可选择 32 位或 64 位版本的软件时,32 位版本将标识为 x86,64 位版本标识为 x64。话虽如此,在这种情况下,只有 x64 版本以这种方式明确标识,“普通”名称只是隐含的替代版本。

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 2023-03-25
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2019-01-13
    相关资源
    最近更新 更多