Vielleicht hilft das weiter...
Delphi-Quellcode:
const
bak_ext = '.$$$';
stAccessDB = 'Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source=%s';
var
JetEngine: Variant;
sTemp: string;
bOffen: Boolean;
begin
Screen.Cursor := crSQLWait;
sTemp := ChangeFileExt(sDbName, bak_ext);
DeleteFile(sTemp);
bOffen := ADOConnection1.Connected;
if bOffen then
ADOConnection1.Connected := False;
try
JetEngine := CreateOleObject('JRO.JetEngine');
try
Application.ProcessMessages;
JetEngine.CompactDatabase(
Format(stAccessDB, [sDBName]),
Format(stAccessDB, [sTemp]));
DeleteFile(sDBName);
RenameFile(sTemp, sDBName);
JetEngine := Unassigned;
Screen.Cursor := crDefault;
except
//
else
Screen.Cursor := crDefault;
JetEngine := Unassigned;
MessageDlg(Format('FEHLRER!%sDie Datenbank wurde nicht gepackt!',
[#13#10]), mtInformation, [mbOk], 0);
end;
finally
if bOffen then
ADOConnection1.Connected := True;
end;
end;
Nachtrag: sDBName ist der komplette Filename der MDB-Datei!
Grüße
Mikhal
[edit]Rechtschreibfehler korrigiert[/edit]
[edit]Nachtrag[/edit]