星期二, 6月 16, 2009

壓縮mdb資料庫


function CompressDB(DBName: string): Boolean;
var
DaoVar: OLEVariant;
tmpDBName : string;
begin
if not FileExists(DBName) then
begin
Result := False;
exit;
end;

tmpDBName := ExtractFilePath(DBName) + 'temp.mdb';
if dm1.ADOConnection2.Connected then dm1.ADOConnection2.Connected := false; //如果資料庫打開,則要先關閉
try
try
DaoVar := CreateOleObject('DAO.DBEngine.36');
if FileExists(tmpDBName) then DeleteFile(tmpDBName); //刪除臨時資料庫"temp.mdb"
DaoVar.CompactDatabase(DBName, tmpDBName); //壓縮"dbName" 到"temp.mdb"
if DeleteFile(DBName) then //刪除文件"dbName"
RenameFile(tmpDBName, DBName); //將"temp.mdb"改名為"dbName "
Result := true;
except
Result := false;
end;
finally
// dm1.ADOConnection2.Connected := true; //為了其它操作能夠正常執行,還要打開資料庫連接。
end;
end;