Heb ooit deze functie gemaakt om een TADOConnection in te stellen voor een Access Database(.mdb / .accdb).
Maar ook hierbij is het vereist dat je voor Win64 code of .accdb bestanden de Microsoft Data Access componenten hebt geinstalleerd.
Als het resultaat van de functie True is, dan is je ADOConnection verbonden.
Code:
//#############################################################################
const
MSProviders : array[0..1] of record
Data : string;
Skip : Boolean;
end = (
(Data: 'Microsoft.Jet.OLEDB.4.0'; Skip: false),
(Data: 'Microsoft.ACE.OLEDB.12.0'; Skip: false));
ProviderStr = 'Provider=%s;';
DataSourceStr = 'Data Source="%s";Persist Security Info=False;';
ConnectPsw = 'Jet OLEDB:Database Password=%s;';
function SetConnectionEx(ACnx: TADOConnection; ADataBase, APassword: string): Boolean;
var
i : Integer;
CnxStr : string;
begin
if FileExists(ADataBase) then
begin
CnxStr := Format(DataSourceStr, [ADataBase]);
if (APassword <> '') then
CnxStr := CnxStr + Format(ConnectPsw, [APassword]);
{$IFDEF WIN64}
for i := High(MSProviders) downto Low(MSProviders) do
{$ELSE}
for i := Low(MSProviders) to High(MSProviders) do
{$ENDIF}
try
if not MSProviders[i].Skip then
begin
ACnx.Connected := false;
ACnx.ConnectionString := Format(ProviderStr, [MSProviders[i].Data]) + CnxStr;
ACnx.Connected := true;
Break
end
except
on E:EDataBaseError do
Break;
on E:Exception do
MSProviders[i].Skip := true
end;
Result := ACnx.Connected
end
else
Result := false
end;
Bookmarks