Einzelnen Beitrag anzeigen

Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Access datenbank komprimieren und reparieren

  Alt 22. Aug 2005, 19:33
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]
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!
  Mit Zitat antworten Zitat