目前,我在编写一个EXCEL的64位插件,是DELPHI XE10.2 作为编程环境的。在我编译到64位插件时,在IDE环境中已经测试通过的链接,提示出现'' 未找到提供程序,可能未安装"类似的错误 ,用到的还是TAdoConnection中的JET 驱动(oledb)方式。
系统环境是WIN10+X64,delphixe10.2,编译为64位的DLL插件。
因为在IDE中已经测试通过,在32位环境下也编译通过了,但在64下编译时出错,可以判断问题出在JET驱动方式连接不支持64位系统 。
经网上检索,确实是这样的,Jet方式不支持 64位,得换用64位的驱动程序。
=========
解决
1. 下载运行 AccessDatabaseEngine_x64.exe
(http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en)
2. 改变连接字符串:
Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=mdb.mdb;uid=admin;pwd=password;//mdb和accdb中间有个空格
程序代码如下:
function OpenAccessX64(apath: string): tadoconnection;
var
filename, PATH_name: WideString;
CON: TADOConnection;
begin
CON := TADOConnection.Create(nil);
CON.LoginPrompt := false;
filename := apath + 'SysData.mdb';
CON.ConnectionString :=
'Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=' + filename +
';Persist Security Info=False;' +
'Mode=Share Deny Read|Share Deny Write;Extended Properties="";Jet OLEDB:System';
CON.Connected := True;
result := CON;
end;
到此,我在WIN10+64位+delphi xe中编译64位程序时,实现了64位的ACCESS数据连接。