Office System

The Office Developer Blog (by Luiz Cláudio C. V. Rocha - São Paulo, Brazil)

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?

Gratos

Gerson Weiss"

 

 

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.

 

Comments

cleverson said:

Caro Luiz Claudio,

 Sou um mero colecionador de dicas boas, e as suas com certeza não poderia  deixar de tê-las.

 Tentando agilizar a criação de aplicações em access com o reaproveitamento de códigos e forms existentes, deparei-me também com este problema, e após algumas observações, usando o access 2000 e as vezes 2003, resolvi da seguinte forma:

01  - Antes de iniciar a importação dos códigos e forms existentes para o novo mdb, faço o seguinte procedimento em ambos os bancos, novo e antigo:

- Acesso  as bibliotecas disponíveis através da criação de um relatório dos relacionamentos das tabelas, claro que após a criação das tabelas .

      Assim desmarco todas as referências possíveis, geralmente ficam somente o Microsoft Access x.xx Object Library e Visual Basic For Aplications.

Após a importação, vou em Depurar e faço a compilação do projeto, as mensagens que possa surgir na maioria se referem a nomes de controles.

Espero ter contribuído.

Abraços

Cleverson

Visite:

www.esnips.com/.../ExamplesAccess

# July 2, 2009 3:03 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)