Access - erro "A conexão de rede pode ter sido perdida"
"Estou com um problema no Access 2000. Vez ou outra a seguinte mensagem é ativada:
"Erro ao acessar arquivo. A conexão de rede pode ter sido perdida."
Recordo de haver lido alguma coisa sobre o assunto aqui mesmo no AtivoAccess mas, agora
não consigo mais localizar.
Poderiam oferecer-me alguma indicação de como resolver esta situação?
Trata-se aqui do pior bug do Access 2000.
Quando ocorre? Ocorre quando há duas versões incompatíveis do componente VBE.DLL na máquina de desenvolvimento (VB6 + Access 2000, por exemplo), e o desenvolvedor importa algum objeto com código (um formulário, relatório, módulo, ou mesmo um TXT com código) e fecha o MDB sem fazer a compilação do código.
Apesar da mensagem falar em conexão de rede, o bug não tem nada a ver com isto. O que ocorre é a quebra do próprio código mesmo.
O desenvolvedor precisa fazer duas coisas:
a) Atualizar os Service Packs do Office 2000.
b) Ter o hábito de compilar o código sempre que algum objeto for importado.
Ambas são boas práticas, independente de haver bug do Access ou não.
Estas medidas evitarão que o banco de dados volte a se corromper pelo mesmo motivo, mas o MDB corrompido não será recuperado. Aliás, a recuperação do MDB com o problema “conexão de rede perdida” costuma ser difícil (às vezes impossível). Eu já consegui reparar de duas formas:
a) Abrir o MDB usando uma versão mais recente do Access, ativar a janela do VBA e nela excluir o módulo do objeto corrompido (ou seja, aquele que você importou de uma fonte externa). Depois, vá à janela de banco de dados e exclua o próprio objeto. Compile, e se estiver OK, faça novamente a importação. Compile novamente antes de fechar o MDB.
b) Abra a janela do VBA e salve cada módulo do projeto em um arquivo texto. Entre na estrutura de cada formulário e relatório do banco de dados e ajuste a propriedade “Has module” (Tem módulo) para Não, a fim de quebrar todas as ligações com o VBA. Crie um novo MDB e importe todos os objetos (exceto os módulos). Vá em cada objeto, abra o módulo e cole os procedimentos salvos no TXT. É um trabalho e tanto, mas funciona.