Thema: Delphi CompactDatabase

Einzelnen Beitrag anzeigen

Ralf Stehle

Registriert seit: 8. Aug 2003
124 Beiträge
 
Delphi 7 Professional
 
#1

CompactDatabase

  Alt 6. Okt 2004, 19:09
Ich arbeite mit Access-Datenbanken und versuche fehlerhafte Datenbanken mit CompactDatabase zu reparieren. Zwar funktioniert dies zum Komprimieren einwandfrei, bei tatsächlich defekter *.mdb-Datei kommt aber die Fehlermeldung: Fehler bei der Authentifizierung.

Mit Access selbst kann ich die beschädigte Datenbank aber reparieren.

Was macht Access besser als die gleiche Routine in Delphi ?



Hier der Code für CompactDatabase aus http://delphi.about.com/library/weekly/aa091801a.htm:

Delphi-Quellcode:
function DatabaseCompact(const sdbName: WideString) : boolean;
var
 JE : TJetEngine; //Jet Engine
 sdbTemp : WideString; //TEMP database
 sdbTempConn : WideString; //Connection string
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
Ralf Stehle
ralfstehle@yahoo.de
  Mit Zitat antworten Zitat