Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 20 de Julho de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
24 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Compactar banco de dados Access pelo Delphi
Publicado por Kolzx : Sexta, Dezembro 03, 2004 - 05:50 GMT-3 (5195 leituras)
Comentários 4 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Administrador Um grande problema para a manutenção de banco de dados access, é que eles vão ficando grandes demais com o passar do tempo, existe uma ferramenta no proprio Access para Compactar/Corrigir o Banco, mas seria uma tarefa para um Operador, e não para o usuário final. Aqui vai uma rotina para subistituir o Operador, espero que gostem :

procedure TFCompacta.CompactaMDB(Sender: TObject);
 var db: OleVariant;
 PathDb: string;
begin
    PathDb := 'c:\scej\dados\' + FPrincipio.TEmpresaAlias.Value + '.mdb';
    db := GetADOObject('JRO.JetEngine');
    db.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;' +
    'Data Source=' + PathDb + ';Jet OLEDB:Database Password="";',
    'Provider=Microsoft.Jet.OLEDB.4.0;' +
    'Data Source=' + ExtractFilePath(PathDb) + 'novobd.mdb' +
    ';Jet OLEDB:Database Password=""' +
    ';Jet OLEDB:Engine Type=5'); // 4 se for Access 97
    if not DeleteFile(PathDb) then
// file://deleta bd antigo
begin
    ShowMessage('Ocorreram problemas renomeando os arquivos temporários!'
    + #13 + 'A operação foi cancelada.');
    DeleteFile(ExtractFilePath(PathDb) + 'novobd.mdb');
// file://deleta arquivos temporarios
    exit;
end;
    RenameFile(ExtractFilePath(PathDb) + 'novoBD.mdb', PathDb);
//file://renomeia bd compactado
    DeleteFile(ExtractFilePath(PathDb) + 'novobd.mdb');
//file://deleta arquivos temporarios
// ShowMessage('Processo Concluído com sucesso!');
    { except 
    on e: Exception do
    ShowMessage(E.Message);
end;
    finally
    db := unassigned;
// file://limpa variaveis de objetos
    end;}
    end; function TFCompacta.GetADOObject(ADOClass: string): OLEVariant;
    var o: OLEVariant;
begin
    try
    o := CreateOLEObject(ADOClass);
    except on EOleException do
    o := unassigned
end;
    Result := o;
end;




Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: henriquesurf : Dez 07, 2004 - 12:54
(Informações sobre o membro | Enviar uma mensagem)
Tem vários erros, varias variaveis que ele não localiza, por exemplo a variavel da FUNCTION,
CreateOLEObject(ADOClass);

T+


por: morfus : Jan 10, 2007 - 11:43
(Informações sobre o membro | Enviar uma mensagem) http://loucosporvideo.googlepages.com/
Fiquei meio confuso com a forma que foi 'jogado' o código dentro do artigo, mas depois de copiá-lo, entendê-lo e organizá-lo eu rodei e foi beleza - funciona redondinho!!!

Legal cara!


por: miltinhoms (miltinho@miltinho.com.br) : Nov 26, 2009 - 05:06
(Informações sobre o membro | Enviar uma mensagem) http://
Cara, eu fiquei 5 horas SEM PARAR procurando solução internet a fora pra compactar meu banco Access 2003 com senha e só esse código funcionou! VALEU MESMO!!!!

Ah, concordo com o pessoal aí, tá confuso mesmo, viu? Precisa adaptar algumas coisas...

Mas, o que importa é que eu compactei meu banco com senha!!!!

VALEU!!!!!!!!!!!!!!!! Vou dormir em paz... hehehe
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados