Arquivo da tag: reparação

Bug ao Compactar e Reparar

Há bastante tempo, uma falha grave no utilitário Compactar e Repara Banco de Dados no Access 2007 vem pegando de surpresa muitos programadores. O que acontece é que, no meio do processo, o Access para e apresenta a mensagem:

O Microsoft Office Access não pode excluir C:\SuaPasta\SeuBD.accdb após compactá-lo. O banco de dados compactado foi nomeado como C:\SuaPasta\BancodeDados.mdb

O Access, no seu processo normal de compactação e reparação, cria um novo arquivo com todos os objetos, deleta o arquivo original e renomeia a cópia, que passa a ser o seu novo arquivo.

Quando a falha do Access acontece e gera a mensagem de erro acima, o que se percebe é que ele deletou o arquivo original mas não conseguiu renomear o arquivo copiado, que está íntegro. Se você tiver a infelicidade de clicar no botão OK da mensagem, ele também irá deletar esta cópia e você perderá o seu banco de dados definitivamente. E se você não tiver uma cópia de backup…..

Então, como proceder caso aconteça esta falha?

NÃO CLIQUE NO OK EM HIPÓTESE ALGUMA.

Vá na pasta de origem do aplicativo e salve o arquivo que o Access nomeou como BancodeDados.mdb.

Com a cópia realizada, você poderá clicar no OK da mensagem. Renomeie esta cópia salva para o nome original do banco de dados do seu aplicativo, incluindo a alteração da extensão para accdb, se for o caso, e pronto.

Existe correção para este bug?

A Microsoft lançou uma correção (hotfix 950812) em abril de 2008, mas não está disponível para download diretamente. Ao acessar a opção de solicitação de download, aparece a tela abaixo:

Observe que o quadro informa que esta correção estaria sendo lançada no SP2.

De fato, a incidência desse problema diminui consideravelmente após a atualização do SP2, mas não o resolve definitivamente.

Tem alguma forma de se evitar esse problema?

Parece que o principal problema está relacionado com erros não verificados no código VBA.

Siga os seguintes procedimentos:

  • Realize uma cópia de segurança sempre que fizer alterações no seu banco de dados;
  • Após realizar alterações no seu código, use imediatamente o compilar do VBA para sanar quaisquer erros de sintaxe e/ou comandos cometidos;
  • Com o código devidamente compilado, você poderá usar o compactar e reparar.
  • Após ter compilado e compactado, você pode ativar o compactar e reparar ao sair, se o desejar.