Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Banco ACCESS não diminui com delete!


Gustavo_Sid

Pergunta

Olá galera.

Estou fazendo uma aplicação na qual eu conecto pelo ADO num banco de dados Access onde uso uma tabela temporária. Então deleto os registros e insiro novamente.

Acontece que a cada vez que insiro os registros o banco de dados aumenta de tamanho, mas ao deletar os registros o tamanho não diminiu, ou seja, quando insiro novamente ele só vai aumentando o tamanho sendo que estou deletando os registros e o tamanho não diminui.

Talvez tenha que fazer algum comando para deletar os registros fisicamente alguma coisa assim, se alguém souber por favor me ajude.

Obrigado.

Abraços.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

ola Gustavo_Sid beleza?

Então eu trabalho com o banco ACCESS (mdb) padrão access 2003 já faz algum tempo.

Utilizo ele n comercialmente, mas sim como cadastros simples de filmes, de hora, agenda de contatos e outras coisas pessoais.

tb utilizo ADO e Query.

Mas eu n sei como limpar este tipo de banco via programação em delphi.

Exemplo no meu banco de dados eu deleto os itens e eles apenas ficam ocultos no banco.

Na verdade eu utilizo o proprio MS access para limpar o banco.

1 - você abre o banco em modo exclusivo
2 - va em opções
3 - dai vai ter um opção para reparar o banco.

ou

Para que o novo campo INDICE inicie com o valor 1, selecione no menu do ACCESS:
Ferramentas/Utilitários de banco de dados/Compactar e corrigir banco de dados

quando você manda repara o banco ele realmente deleta os itens "anteriormente deletados em seu programa".

Eu sei que n vai ser uma ajuda, mas sim uma dica!

porque se tiver alguma maneira de limpar o banco ACCESS via delphi seria otimo!

um abraço e boa sorte!

Link para o comentário
Compartilhar em outros sites

  • 0

Este tópico vai mostrar como compactar o banco de dados criado no Access para

eliminar todo seu espaço excedente, reduzindo assim, o tamanho do arquivo de banco de

dados.

Procedimentos a serem executados:

Acrescente um Panel invisível (Visible = False) na tela FrmMenuPrin.

Na Unit da tela FrmMenuPrin, acrescente a unit ComObj na sua cláusula Uses e

crie a procedure abaixo:

Crie uma opção no menu principal: Ferramentas -> Compactar para chamar a

procedure Compactar: Lembre-se usar a ActionList1 (ActComp) e digite os

seguintes comandos no Evento OnExecute da ação ActComp:

If MessageDlg('Antes de confirmar esta operação, feche o banco de dados.' + #13 + #13 + 'Deseja
efetuar a compatação do Banco de Dados?', mtConfirmation, [mbYes, mbNo],0) = mrNo then 

Abort; 

Compactar;
Procedure TFrmMenuPrin.Compactar;
var dao: OLEVariant;
begin 

Panel1.Visible := True;
Dm.Conexao.Connected := False; 

Try 

Panel1.Caption:='Compactando Tabela';
Panel1.Repaint;
dao := CreateOleObject('DAO.DBEngine.36');
dao.CompactDatabase(ExtractFileDir (Application.ExeName)+'\Banco.mdb',
ExtractFileDir(Application.ExeName)+'\Banco2.mdb','',0,'');
Panel1.Caption:='Apagando Arquivo Temporário';
Panel1.Repaint;
If FileExists(ExtractFileDir (Application.ExeName)+'\Banco2.mdb') then
DeleteFile(ExtractFileDir (Application.ExeName)+'\Banco.mdb');
Panel1.Caption:='Renomeando Arquivo';
Panel1.Repaint;
if FileExists(ExtractFileDir (Application.ExeName)+'\Banco2.mdb') then
RenameFile(ExtractFileDir(Application.ExeName)+'\Banco2.mdb',
ExtractFileDir (Application.ExeName)+'\Banco.mdb');
Panel1.Caption:='Arquivo Banco.mdb Compactado';
Panel1.Repaint; 

Except 

panel1.caption:='Ocorreu um Erro durante a compactação'; 

end;

Dm.Conexao.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
ExtractFilePath(Application.ExeName)+
'Banco.mdb;Persist Security Info=False;'; 

Dm.Conexao.Connected := True;
Panel1.Visible := False; 

end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Em 18/05/2011 em 13:01, Jhonas disse:

Este tópico vai mostrar como compactar o banco de dados criado no Access para

eliminar todo seu espaço excedente, reduzindo assim, o tamanho do arquivo de banco de

dados.

 

Procedimentos a serem executados:

 

Acrescente um Panel invisível (Visible = False) na tela FrmMenuPrin.

Na Unit da tela FrmMenuPrin, acrescente a unit ComObj na sua cláusula Uses e

crie a procedure abaixo:

 

Crie uma opção no menu principal: Ferramentas -> Compactar para chamar a

procedure Compactar: Lembre-se usar a ActionList1 (ActComp) e digite os

seguintes comandos no Evento OnExecute da ação ActComp:

 

 

 
If MessageDlg('Antes de confirmar esta operação, feche o banco de dados.' + #13 + #13 + 'Deseja
efetuar a compatação do Banco de Dados?', mtConfirmation, [mbYes, mbNo],0) = mrNo then 

Abort; 

Compactar;
 
Procedure TFrmMenuPrin.Compactar;
var dao: OLEVariant;
begin 

Panel1.Visible := True;
Dm.Conexao.Connected := False; 

Try 

Panel1.Caption:='Compactando Tabela';
Panel1.Repaint;
dao := CreateOleObject('DAO.DBEngine.36');
dao.CompactDatabase(ExtractFileDir (Application.ExeName)+'\Banco.mdb',
ExtractFileDir(Application.ExeName)+'\Banco2.mdb','',0,'');
Panel1.Caption:='Apagando Arquivo Temporário';
Panel1.Repaint;
If FileExists(ExtractFileDir (Application.ExeName)+'\Banco2.mdb') then
DeleteFile(ExtractFileDir (Application.ExeName)+'\Banco.mdb');
Panel1.Caption:='Renomeando Arquivo';
Panel1.Repaint;
if FileExists(ExtractFileDir (Application.ExeName)+'\Banco2.mdb') then
RenameFile(ExtractFileDir(Application.ExeName)+'\Banco2.mdb',
ExtractFileDir (Application.ExeName)+'\Banco.mdb');
Panel1.Caption:='Arquivo Banco.mdb Compactado';
Panel1.Repaint; 

Except 

panel1.caption:='Ocorreu um Erro durante a compactação'; 

end;

Dm.Conexao.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
ExtractFilePath(Application.ExeName)+
'Banco.mdb;Persist Security Info=False;'; 

Dm.Conexao.Connected := True;
Panel1.Visible := False; 

end;

 

 

abraço

Showwww

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...