Erro ao tentar reparar banco Access via código

Delphi

23/06/2004

Olá pessoal. O problema é o seguinte: eu tenho um sistema que usa o access como banco de dados. Eu precisava usar a mesma função de compactar e corrigir o banco de dados que o access possui, mas isso feito via código no delphi. Pesquisando aqui no fórum, eu encontrei as seguintes linhas de código:

ArquivoMDB := local_banco;
try // cria o objeto para manipulacao do BD
DM.ADOConnection1.Close;
DM.ADOConnection1.Connected := False;
DB := CreateOLEObject(´DAO.DBEngine.36´);
DB.RepairDataBase(ArquivoMDB); // reparar
Temp := ExtractFilePath(ArquivoMDB) + ´Temp.mdb´;
DB.CompactDataBase(ArquivoMDB, Temp); // compactar
DeleteFile(ArquivoMDB);
RenameFile(Temp, ArquivoMDB);
Application.MessageBox(´Banco de dados reparado e compactado com sucesso.´, ´Aviso´, mb_IconInformation);
except
on E: Exception do Application.MessageBox(PChar(E.message), ´Erro DAO´, mb_IconError);
end;

Entrentanto, quando o programa tenta executar o comando de reparação do banco, dá erro dizendo que o objeto não suporta tal operação. E se eu tirar esta linha de código deixando apenas a compactação, funciona. Porque a reparação não funciona?

Outro questão é a seguinte: eu instalei este programa em computadores que não possuem o Access instalado, então eu instalei o mdac que vem no cd do Delphi e o meu programa consegue acessar o banco normalmente. Mas seu tentar compactar, aí não funciona. Existe alguma dll do Access que eu possa registrar nesses computadores ou terei que realmente instalar o Access ?


Cristiano D.

Cristiano D.

Curtidas 0
POSTAR