Compactar e corrigir banco Access

Delphi

14/02/2004

Olá pessoal. Estou usando o banco de dados Access em minha aplicação e gostaria de saber o seguinte: é possível executar a funçaõ ´Corrigir e compactar banco de dados´ existente no Access através do Delphi? Existe alguma função no Delphi que faz isso? Eu estou usando Delphi 5 Enterprise com banco de dados Access 2000.

Agradeço desde já pela atenção.

Cristiano.


Cristiano D.

Cristiano D.

Curtidas 0

Respostas

Ilanocf

Ilanocf

14/02/2004

Olá Cristiano,

Eu tenho o código para compactar:

Adicione na seção Uses: comobj, db, dbtables
, mas não coloque no final.

Em seu formulário coloque um Panel, um RadioGroup (de name Opcoes, para o usuário escolher entre as versões 97 ou 2000) e um Button (de name BtnCompactar);

No evento OnClick de seu button, copie o código abaixo:

procedure TFrmCompactacao.BtnCompactarClick(Sender: TObject); var dao: OLEVariant; begin Try Panel1.Caption:=´COMPACTANDO TABELA´; Panel1.Repaint; If Opcoes.ItemIndex = 0 Then //Para versão 97 Begin dao := CreateOleObject(´DAO.DBEngine.35´) End Else If Opcoes.ItemIndex = 1 Then //Para versão 2000 Begin dao := CreateOleObject(´DAO.DBEngine.36´); End; {dao := CreateOleObject(´DAO.DBEngine.35´);} dao.CompactDatabase(extractfiledir(Application.ExeName)+´\Dados.mdb´, extractfiledir(Application.ExeName)+´\Dados2.mdb´); [b:92d9db7598]//****CASO QUEIRA UTILIZAR SENHA, SUBSTITUA A LINHA ACIMA PELA LINHA ABAIXO: ******[/b:92d9db7598] [color=red:92d9db7598]//dao.CompactDatabase(extractfiledir(Application.ExeName)+´\Dados.mdb´, extractfiledir(Application.ExeName)+´\banco2.mdb´,´´,0,´;pwd=´);[/color:92d9db7598] Panel1.Caption:=´APAGANDO ARQUIVO TEMPORÁRIO´; Panel1.Repaint; if FileExists(extractfiledir(Application.ExeName)+´\Dados2.mdb´) then DeleteFile(extractfiledir(Application.ExeName)+´\Dados.mdb´); Panel1.Caption:=´RENOMEANDO ARQUIVO´; Panel1.Repaint; if FileExists(extractfiledir(Application.ExeName)+´\Dados2.mdb´) then RenameFile(extractfiledir(Application.ExeName)+´\Dados2.mdb´,extractfiledir(Application.ExeName)+´\Dados.mdb´); Panel1.Font.Color:=clRed; Panel1.Caption:=´ARQUIVO CURSO.MDB´ + #13 + ´COMPACTADO COM SUCESSO!´; BtnCompactar.Enabled:=False; Panel1.Repaint; BtnCompactar.Enabled:=False; Opcoes.ItemIndex:=-1; except panel1.caption:=´OCORREU UM ERRO´ + #13 + ´DURANTE A COMPACTAÇÃO´; DMDados.CONEXAO.Connected:=True; BtnCompactar.Enabled:=False; Opcoes.ItemIndex:=-1; end; end;


OBS.: Dados é nome do Banco de Dados. Veja o q diz no Help do Access:

Para compactar o banco de dados atual [b:92d9db7598]1º CASO:[/b:92d9db7598] No menu Ferramentas, aponte para Utilitários de Banco de Dados e, em seguida, clique em Compactar Banco de Dados. [b:92d9db7598]2º CASO:[/b:92d9db7598] Para compactar um banco de dados que não foi aberto no Microsoft Access 1 - Feche o banco de dados atual. 2 - No menu Ferramentas, aponte para Utilitários de Banco de Dados e, depois, clique em Compactar Banco de Dados. 3 - Na caixa de diálogo Compactar Banco de Dados, especifique o banco de dados que você deseja compactar e clique em Compactar. 4 - Na caixa de diálogo Compactar Banco de Dados Em, especifique um nome, unidade e pasta para o banco de dados compactado. 5 - Clique em Salvar. Se você utilizar o mesmo nome, unidade e pasta e o banco de dados for compactado com êxito, o Microsoft Access substituirá o arquivo original pela versão compactada.


Portanto, nas linhas em q existem [b:92d9db7598]Dados[/b:92d9db7598] e [b:92d9db7598]Dados2[/b:92d9db7598] são para realizar a compactação como explica o [b:92d9db7598]2º CASO[/b:92d9db7598] descrito acima.

Então, preste bastante atenção no endereço de seu banco de dados. De preferência, deixe-o junto com seu executável.

Espero ter ajudado,

Ilano.


GOSTEI 0
POSTAR