program CompactAccessMDB; {$APPTYPE CONSOLE} {$mode objfpc}{$H+} uses SysUtils, Interfaces, // used packages: LazActiveX JRO_2_6_TLB; // Microsoft Jet Replication Objects 2.6 Library procedure CompactMDB(const Filename: string); var jro: JetEngine; FilenameNeu: string; begin try FilenameNeu := ChangeFileExt(Filename, '~.mdb'); jro := CoJetEngine.Create(); jro.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Filename + ';', 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FilenameNeu + ';'); if FileExists(FilenameNeu) then begin DeleteFile(PChar(Filename)); RenameFile(FilenameNeu, Filename); end; except DeleteFile(PChar(filenameNeu)); end; jro := nil; end; begin CompactMDB(ParamStr(1)); end.