Q:如何壓縮及修復 Access 資料庫?
A:參考下列程式碼 (只適用 Access97):
uses ComObj;
function DaoActive(var DaoObject: OleVariant): Boolean;
begin
Result := false;
try
DaoObject := GetActiveOLEObject('DAO.DBEngine.35');
Result := true;
except
try
DaoObject := CreateOLEObject('DAO.DBEngine.35');
Result := true;
except
DaoObject := null;
end;
end;
end;
// 壓縮 MSACCESS 資料庫
function DaoCompactDB(const FileName: String): Boolean;
var
db: OLEVariant;
tempFile: String;
begin
Result := false;
try
screen.cursor := crSQLWait ;
if not DaoActive(db) then
Exit;
try
tempFile := AppendSlash(ExtractFilePath(Filename)) + 'msaTemp.mdb';
db.CompactDataBase(FileName, tempFile);
DeleteFile(FileName);
RenameFile(tempFile, FileName);
Result := true;
Except
on E: EOleException do
MsgError(E.Message);
end
finally
db := Unassigned;
screen.cursor := crDefault;
end;
end;
// 修復 MSACCESS 資料庫
function DaoRepairDB(const FileName: String): Boolean;
var
db: OLEVariant;
begin
Result := false;
try
Screen.Cursor := crSQLWait ;
if not DaoActive(db) then
Exit;
try
db.RepairDataBase(FileName);
Result := true;
except
on E: EOleException do
MsgError(E.Message);
end;
finally
db := Unassigned ;
Screen.Cursor := crDefault ;
end;
end;
               (
geocities.com/huanlin_tsai)