Fórum Compactar e corrigir banco Access #214127
14/02/2004
0
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.
Agradeço desde já pela atenção.
Cristiano.
Cristiano D.
Curtir tópico
+ 0
Responder
Posts
16/02/2004
Ilanocf
Olá Cristiano,
Eu tenho o código para compactar:
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:
OBS.: Dados é nome do Banco de Dados. Veja o q diz no Help do Access:
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.
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.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)