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;