ich schließe mich Perlsau an, bei der Gelegenheit böte sich ein Kompress/Repair mit an
Delphi-Quellcode:
procedure CompressRepairMDB(DBFile : TFileName; APassword :
String);
const
tmpDBName = '
compress.mdb';
var
JROJetEngine : TJetEngine;
srcConn,
destConn :
String;
begin
JROJetEngine := TJetEngine.Create(
nil);
try
srcConn := '
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DBFile;
destConn := '
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + sPath + tmpDBName;
if APassWord <> '
'
then begin
srcConn := srcConn + '
;Jet OLEDB:Database Password="' + APassWord+ '
"';
destConn := destConn + '
;Jet OLEDB:Database Password="' + APassWord+ '
"';
end;
// Datenbank reparieren & komprimieren
JROJetEngine.CompactDatabase(srcConn, destConn);
if FileExists(sPath + tmpDBName)
then
begin
// Ausgangsdatenbank löschen oder auch nicht (gegf. umbenennen)
DeleteFile(PChar(DBFile));
// Komprimierte DB anstelle der AusgangsDB kopieren
CopyFile(PChar(sPath + tmpDBName), PChar(DBFile), false);
// Komprimierte DB löschen oder als Backup aufbewaren
DeleteFile(PChar(sPath + tmpDBName));
end;
finally
JROJetEngine.Disconnect;
JROJetEngine.Free;
end;
end;
mit Typbibliothek Microsoft Jet and Replication Objects 2.x