源码:
//AFileName:文件名称,APassWord:密码
procedure CompactDatabase(AFileName,APassWord:string);
const
SConnStr = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s;';
var
SPath,SFile:Array [0..254] Of Char;
STempFileName:String;
JE:OleVariant;
begin
GetTempPath(40,SPath);
GetTempFileName(SPath,'~CP',0,SFile);
STempFileName:=SFile;
DeleteFile(STempFileName);
try
JE:=CreateOleObject('JRO.JetEngine');
OleCheck(JE.CompactDatabase(Format(SConnStr,[AFileName,APassWord]),
Format(SConnStr,[STempFileName,APassWord])));
CopyFile(PChar(STempFileName),PChar(AFileName),False);
DeleteFile(STempFileName);
showmessage('数据库压缩完成!');
except
showmessage('数据库压缩失败!');
end;
end;