Compresser une base de données *.mdb sans Access
Bonjour à tous,
Je souhaite compresser une base de données Access sans que Access soit installé sur le poste, donc directement avec Jet Engine.
J'ai trouvé ce code chez nos parrains Delphynautes mais je suis incapable de l'adater à C++, donc si vous avez des idées...: :king:
Citation:
function CompactAccessDB(DB, MdP : string): Boolean; {DB = path complet de la base Access, MdP = password de la DB }
// Ajouter ComObj dans les Uses
var
v: OLEvariant;
begin
Result := False;
try
v := CreateOLEObject('JRO.JetEngine');
try
if CopyFile(PAnsiChar(DB),PAnsiChar(DB+'.bak'),False) then //backup de la base
begin
V.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DB+';Jet OLEDB: Database Password='+MdP,
'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DB+'comp'+';Jet OLEDB: Database Password='+MdP); //compactage
DeleteFile(DB);// suppression de la base d'origin
RenameFile(DB+'comp',DB); // mise en place de la base compactée
Result := True;
end;
finally
V := Unassigned;
end;
except
Result := False;
end;
end;