你好:
這個程序給你參考
![]()
< class="code">
procedure CompactDatabase(DatabaseName{完整的資料庫名稱路徑}, Password : string {資料庫密碼});
const
BaseSrc = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s';
var
JetEngine : IJetEngine; {需要 Import Type Library msjro.DLL}
Path : String;
TmpName : array[0 .. Max_Path] of Char;
begin
randomize;
Path := ExtractFilePath (DatabaseName);
if GetTempFileName (PChar (Path), Nil, 0, TmpName) = 0 then begin
StrCopy (TmpName, PChar (format (path '%x', [trunc (random (65535))])));
end else begin
DeleteFile (TmpName);
end;
JetEngine := CoJetEngine.Create;
try
JetEngine.CompactDatabase(format (BaseSrc, [DatabaseName, Password]), format (BaseSrc, [TmpName, Password]));
if DeleteFile (DatabaseName) {刪除舊的資料庫} then begin
if MoveFile (TmpName, PChar (DatabaseName)) {將新的資料庫移到指定目錄} then
ShowMessage (format ('%s 資料庫壓縮成功。', [DatabaseName]))
else
ShowMessage (format ('%s 無法改名為 %s,請自行改名。', [TmpName, ExtractFileName (DatabaseName)]));
end else
ShowMessage (format ('%s 刪除失敗,請自行刪除並將 %s 改名成 %s。', [DatabaseName, ExtractFileName (TmpName), ExtractFileName (DatabaseName)]));
finally
JetEngine := nil;
end;
end;