Hola Enan0:
Te pongo aqui este código que es el que yo utilizo para compactar mis bases de datos. Espero que te sirva.
Código Delphi
[-]
function DatabaseCompact (const sdbName: WideString) : boolean;
var
JE : TJetEngine; sdbTemp : WideString; sdbTempConn : WideString;
const
SProvider = 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source=';
begin
Result:=False;
sdbTemp := ExtractFileDir(sdbName) + 'TEMP' + ExtractFileName(sdbName);
sdbTempConn := SProvider + sdbtemp;
if FileExists(sdbTemp) then DeleteFile(sdbTemp);
JE:= TJetEngine.Create(Application);
try
try
JE.CompactDatabase(SProvider + sdbName, sdbTempConn);
DeleteFile(sdbName);
RenameFile(sdbTemp, sdbName);
except
on E:Exception do
ShowMessage(E.Message);
end;
finally
JE.FreeOnRelease;
Result:=True;
end;
end;
Para llamar a la función se utiliza esta linea:
Código Delphi
[-]
DatabaseCompact('C:\directorio\base.mdb');
Espero que te sirva. Saludos!.