Tenho um código que faz isto no access 97..
dá uma olhada ai.
Para compactar e/ou reparar um Banco de Dados do Access 97 através do Delphi:
1 - Inclua a Unit ComObj na seção ´uses´ de sua Unit;
2 - utilize uma função semelhante à seguinte:
var
dao : TOLEVariant;
begin
BD.connected := FALSE;
dao := CreateOleObject(´DAO.DBEngine.35´);
dao.RepairDataBase(´BD Atual´);
dao.CompactDataBase(´BD Atual´, ´BD Novo´, , , ´;pwd=PASSWORD´);
DB.connected := TRUE;
end;
onde: BD Atual é uma string contendo o caminho e o nome do banco de dados a ser
compactado e/ou reparado. (Exemplo: C:\MEUS DOCUMENTOS\BD1.MDB).
BD Novo é uma string contendo o caminho e o nome do novo banco de dados que será
criado após a compactação de BD Atual. (Exemplo: C:\TEMP\BD1COMPACT.MDB).
obs.: Se vc estiver compactando um banco de dados protegido por senha terá que informar
a senha do banco de dados na linha de comando para que o mesmo possa ser
compactado (5º parâmetro do procedimento CompactDataBase).
O 3º e o 4º parâmetros da função CompactDataBase são para alterar configurações
e diretórios dos bancos de dados. Para uma explicação mais detalhada, consulte
o arquivo:
´C:\Arquivos de Programas\Arquivos Comuns\Microsoft Shared\Dao\Dao35.hlp´ e
procure pelo índice ´compactando Bancos de Dados´.
Se o Banco de Dados não precisar de senha, o 3º, 4º e 5º parâmetros da função
CompactDataBase podem ser omitidos.
Exemplo : dao.CompactDataBase(´BD Atual´, ´BD Novo´);