Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

Re: Nach komprimieren der DB bleibt Zugriff exclusiv gesperr

  Alt 5. Sep 2005, 13:24
Ich weiss nicht, woher die Klasse TJetEngine stammt.
Ich nehme mal an, du hast dir von Delphi eine Wrapper-Klasse erzeugen lassen.
In diesem Fall; es wird eine einzige Interface-Methode aufgerufen; sollte man aber besser direkt mit dem Interface arbeiten.
Bei folgender Prozedure wird sichergestellt, dass das Interface auch wieder freigegeben wird.
Delphi-Quellcode:
procedure Access_Compact(const aAccess: string);
const
  bak_ext = '.$$$';
  stAccessDB = 'Provider=Microsoft.Jet.OLEDB.4.0;'+
                      'Data Source=%s';
var
  JetEngine : OleVariant;
  TempName : string;
begin
  TempName := ChangeFileExt(aAccess, bak_ext);
  DeleteFile(TempName);
  JetEngine := CreateOleObject('JRO.JetEngine');
  try
    JetEngine.CompactDatabase(
      Format(stAccessDB, [aAccess]),
      Format(stAccessDB, [TempName]));
    DeleteFile(aAccess);
    RenameFile(TempName, aAccess);
  finally
    JetEngine := Unassigned;
  end;
end;
Andreas
  Mit Zitat antworten Zitat