使用 Microsoft Access 数据库编写 delphi 64 位应用程序时出现问题
Problem writing delphi 64 bit application using microsoft access databases
发生了什么:
创建 delphi 32 位应用程序以打开一个 ms access 数据库,较新的 accdb 是使用 access 2013 32 位版本创建的。使用 TADOConnection 和 dbgo。效果很好。
更改为 64 位平台,当我尝试在 运行 时打开 table 时,我收到“找不到提供程序错误”。虽然我可以开一个table内的IDE。 OS 是 windows 10 专业版 64 位。
我试过卸载ms office,然后下载并安装access 2013数据库引擎,64位版本之一。如果我在新项目上放置 TADOConnection,则没有 MS ACE 12 或 15 提供程序。如果我卸载 64 位数据库引擎,并安装 32 位数据库引擎,我会在 delphi 32 位和 64 位目标平台中看到提供程序。我尝试使用“passive”参数安装 64 位数据库引擎,但微软显然已经抓住了这个技巧,并会给出关于您无法同时安装 32 位和 64 位版本的常见错误消息。所以我尝试使用 2010 版本的数据库引擎,但仍然收到错误消息,尽管不同。
感觉好像少了什么。奇怪的是,在 IDE 中,使用 32 位访问引擎和 64 位 delphi 目标平台,我可以激活连接并打开一个 table。但是,如果我尝试在 运行 时间打开 table,我会收到错误消息。我也尝试卸载并重新安装 delphi.
好吧,简短的回答是肯定的,但有一些注意事项:
- 您只能安装 32 位或 64 位访问 2013 引擎驱动程序或 Office,或这两者的任意组合。 Microsoft 已禁用 /passive 或 /quiet 方法来绕过它。所以你不能同时安装 32 位和 64 位。 (至少以一种直接的方式)您可以转到控制面板并通过管理工具查看安装了哪些 ODBC 驱动程序。
- IDE是32位的,安装时只能看到32位的access engine provider(通过tadoconnect build data provider)。安装的任何 64 位提供程序在 tadoconnect 构建连接字符串向导中都不可见。
- 好消息是 32 位和 64 位访问引擎提供程序具有完全相同的提供程序名称。因此,如果您安装 32 位驱动程序,创建您的 32 位项目,您也可以创建您的 64 位目标。
- 安装 32 位驱动程序后,您的 32 位目标应用程序将正常调试和 运行。如果您尝试 运行 64 位目标,您将收到“找不到提供程序”
- 安装 64 位驱动程序后,您的 64 位目标应用程序将 运行 正常,而 32 位应用程序将出现“找不到提供程序”错误。此外,在 IDE 中,您将无法通过 tadoconnect 中的构建连接字符串看到数据提供程序,只需保留它即可,因为它具有完全相同的名称。您可以 运行 或调试您的 64 位应用程序,假设数据提供者是正确的,即使您看不到它。
感谢 Ken White 指出了正确的方向。
发生了什么: 创建 delphi 32 位应用程序以打开一个 ms access 数据库,较新的 accdb 是使用 access 2013 32 位版本创建的。使用 TADOConnection 和 dbgo。效果很好。 更改为 64 位平台,当我尝试在 运行 时打开 table 时,我收到“找不到提供程序错误”。虽然我可以开一个table内的IDE。 OS 是 windows 10 专业版 64 位。
我试过卸载ms office,然后下载并安装access 2013数据库引擎,64位版本之一。如果我在新项目上放置 TADOConnection,则没有 MS ACE 12 或 15 提供程序。如果我卸载 64 位数据库引擎,并安装 32 位数据库引擎,我会在 delphi 32 位和 64 位目标平台中看到提供程序。我尝试使用“passive”参数安装 64 位数据库引擎,但微软显然已经抓住了这个技巧,并会给出关于您无法同时安装 32 位和 64 位版本的常见错误消息。所以我尝试使用 2010 版本的数据库引擎,但仍然收到错误消息,尽管不同。
感觉好像少了什么。奇怪的是,在 IDE 中,使用 32 位访问引擎和 64 位 delphi 目标平台,我可以激活连接并打开一个 table。但是,如果我尝试在 运行 时间打开 table,我会收到错误消息。我也尝试卸载并重新安装 delphi.
好吧,简短的回答是肯定的,但有一些注意事项:
- 您只能安装 32 位或 64 位访问 2013 引擎驱动程序或 Office,或这两者的任意组合。 Microsoft 已禁用 /passive 或 /quiet 方法来绕过它。所以你不能同时安装 32 位和 64 位。 (至少以一种直接的方式)您可以转到控制面板并通过管理工具查看安装了哪些 ODBC 驱动程序。
- IDE是32位的,安装时只能看到32位的access engine provider(通过tadoconnect build data provider)。安装的任何 64 位提供程序在 tadoconnect 构建连接字符串向导中都不可见。
- 好消息是 32 位和 64 位访问引擎提供程序具有完全相同的提供程序名称。因此,如果您安装 32 位驱动程序,创建您的 32 位项目,您也可以创建您的 64 位目标。
- 安装 32 位驱动程序后,您的 32 位目标应用程序将正常调试和 运行。如果您尝试 运行 64 位目标,您将收到“找不到提供程序”
- 安装 64 位驱动程序后,您的 64 位目标应用程序将 运行 正常,而 32 位应用程序将出现“找不到提供程序”错误。此外,在 IDE 中,您将无法通过 tadoconnect 中的构建连接字符串看到数据提供程序,只需保留它即可,因为它具有完全相同的名称。您可以 运行 或调试您的 64 位应用程序,假设数据提供者是正确的,即使您看不到它。
感谢 Ken White 指出了正确的方向。