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;

    Source: geocities.com/huanlin_tsai/faq

               ( geocities.com/huanlin_tsai)