Como resolver problemas de referência numa base de dados do Access

Número original da BDC: 310803

Resumo

Este artigo descreve problemas que estão relacionados com a utilização de referências numa base de dados do Access.

Compreender os erros de referência exige uma compreensão de como as bibliotecas são referenciadas numa base de dados do Access e do que é necessário para instalar uma base de dados num computador de destino sem quebrar estas referências. Este artigo é um resumo dos seguintes tópicos:

  • Ver referências de base de dados do Access
  • Resolver referências Microsoft Visual Basic for Applications no Access
  • Compreender as mensagens de erro de referência
  • Resolver problemas de referência no computador de desenvolvimento
  • Distribuir ficheiros de base de dados
  • Atualizar a lista de referências
  • Distribuir ficheiros de base de dados que têm controlos ActiveX
  • Voltar a registar um ficheiro

Ver referências de base de dados do Access

Para ver as referências da base de dados atual:

  1. Abra a base de dados.
  2. Prima ALT+F11 para iniciar o Visual Basic Editor.
  3. No menu Ferramentas, clique em Referências.

Resolver referências do Visual Basic no Access

O Access carrega o ficheiro pertinente (por exemplo, uma biblioteca de tipo, uma biblioteca de objetos ou uma biblioteca de controlo) para cada referência, de acordo com as informações apresentadas na caixa Referências. Se o Access não conseguir localizar o ficheiro, o Access executa os seguintes procedimentos para localizar o ficheiro:

  1. O Access verifica se o ficheiro referenciado está atualmente carregado na memória.
  2. Se o ficheiro não for carregado na memória, o Access tenta verificar se a RefLibPaths chave de registo existe. Se a chave existir, o Access procura um valor com nome que tenha o mesmo nome que a referência. Se houver uma correspondência, o Access carrega a referência a partir do caminho para o que o valor nomeado aponta.
  3. Em seguida, o Access procura o ficheiro referenciado nas seguintes localizações, pela seguinte ordem:
    1. A pasta Aplicação (a localização do ficheiro Msaccess.exe).
    2. A pasta atual que vê se clicar em Abrir no menu Ficheiro.
    3. A pasta Windows ou Winnt onde os ficheiros do sistema operativo estão a ser executados.
    4. A pasta Sistema na pasta Windows ou Winnt.
    5. As pastas na variável do ambiente CAMINHO que são diretamente acessíveis pelo sistema operativo.
  4. Se o Access não conseguir encontrar o ficheiro, ocorre um erro de referência.

Compreender as mensagens de erro de referência

Existem várias mensagens de erro relacionadas com um ficheiro em falta ou com um ficheiro que tem uma versão diferente da versão utilizada na base de dados. Na maioria dos casos, pode procurar na Base de Dados de Conhecimento da Microsoft um artigo sobre a mensagem de erro específica e, em seguida, pode resolver o erro seguindo os passos no artigo. Em alguns casos, um ficheiro de dependência não é corretamente correspondido ao ficheiro principal.

A lista seguinte descreve algumas das mensagens de erro de referência que poderá receber. No entanto, tenha em atenção que a lista não inclui todas as possíveis mensagens de erro de referência.

  • "Método MethodName do Objeto ObjectName Falhou"

    Normalmente, poderá receber esta mensagem de erro se houver um problema com uma biblioteca de tipo de programação, por exemplo, um ficheiro de biblioteca de ligação dinâmica (DLL) de objeto de acesso a dados (DAO) inválido. Pode procurar na Base de Dados de Conhecimento da Microsoft artigos que descrevem as várias formas desta mensagem de erro.

  • "A função não está disponível na expressão Utilização"

    Poderá receber esta mensagem de erro se houver um problema com uma biblioteca de tipo de programação ou se o código não chamar especificamente a biblioteca correta e o ficheiro estiver listado numa prioridade mais baixa na lista de referência do que um ficheiro que contém o mesmo nome de função, por exemplo, se o código DAO for utilizado com a biblioteca do objeto de dados (ADO) do ActiveX listada numa prioridade mais elevada do que a biblioteca DAO. Também poderá receber esta mensagem de erro se um formulário ou relatório contiver um controlo ActiveX.

  • "Não consigo encontrar o projeto ou a biblioteca"

    Poderá receber esta mensagem de erro se o Access não conseguir localizar um ficheiro na lista de referências. Muitas vezes, o ficheiro é sinalizado como Em falta na caixa de diálogo Referências. Por vezes, o ficheiro existe no computador de desenvolvimento, mas não no computador de destino.

  • "Variável não definida" ou "Tipo definido pelo utilizador não definido"

    Poderá receber uma destas mensagens de erro se utilizar o Assistente de Segurança de Nível de Utilizador para proteger uma base de dados que referencia bibliotecas para além das bibliotecas que estão incluídas por predefinição. Por exemplo, as referências a bibliotecas que existiam na base de dados não segura não são criadas automaticamente na nova base de dados protegida.

  • "Erro de tempo de execução 5", "Chamada ou argumento de procedimento inválido", "A biblioteca que contém este símbolo não é referenciada pelo projeto atual" ou "A biblioteca que contém este símbolo não é referenciada pelo projeto atual, pelo que o símbolo é indefinido"

    Poderá receber uma destas mensagens de erro se houver uma referência a uma base de dados, a uma biblioteca de tipos ou a uma biblioteca de objetos sinalizada Em falta.

  • "O componente ActiveX não consegue criar o objeto"

    Esta mensagem de erro não significa necessariamente que um controlo ActiveX de está envolvido. Por exemplo, uma causa possível é que o DAO, que é um componente ActiveX, não consegue criar um objeto porque o Servidor de Automatização DAO não consegue iniciar. Frequentemente, a causa é que os DLLs que fornecem a funcionalidade referenciada para o programa não estão registados ou estão registados incorretamente.

Resolver problemas de referência no computador de desenvolvimento

Criar uma nova base de dados em branco e, em seguida, importar objetos de outro ficheiro de base de dados pode criar problemas de referência se o código ou o controlo ActiveX depender de referências que não estão incluídas numa base de dados por predefinição. As referências predefinida para uma base de dados do Access 2000 são:

  • Visual Basic for Applications
  • Biblioteca de objetos do Microsoft Access 9.0
  • Automatização OLE
  • Biblioteca de objetos de dado (ADO) 2.1 do Microsoft ActiveX

Se a origem for outra base de dados do Access 2000, verifique se as referências correspondem. Se a origem estiver numa versão anterior do Access, o DAO 3.5 ou anterior está provavelmente a ser utilizado; no entanto, o Access 2000 não fornece o DAO 3.5 por predefinição. Experimente remover a referência à biblioteca do ADO 2.1 (se existir) e adicionar a referência à biblioteca de objetos do DAO 3.6.

Se tiver convertido a base de dados de uma versão anterior do Access e a base de dados contiver uma referência ao ficheiro Utility.mda, na maioria dos casos pode remover esta referência porque as funções que esta referência chama estão incluídas nas referências predefinidas no Access 2000. Se houver referências a versões anteriores do DAO, também pode remover estas referências porque o DAO 3.6 consegue resolver estas funções.

Para adicionar uma referência a uma biblioteca:

  1. Abra a base de dados.
  2. Prima ALT+F11 para iniciar o Visual Basic Editor.
  3. No menu Ferramentas, clique em Referências.
  4. Em Referências disponíveis, clique para selecionar a caixa de verificação junto ao nome da biblioteca e, em seguida, clique em OK.

Para remover uma referência a uma biblioteca:

  1. Abra a base de dados.
  2. Prima ALT+F11 para iniciar o Visual Basic Editor.
  3. No menu Ferramentas, clique em Referências.
  4. Em Referências disponíveis, clique para desmarcar a caixa de verificação junto ao nome da biblioteca e, em seguida, clique em OK.

Distribuir ficheiros de base de dados

Existem dois métodos básicos de distribuição de ficheiros de bases de dados. Pode copiar o ficheiro do computador de desenvolvimento para o computador de destino ou pode utilizar o Assistente de Embalagem e Implementação para criar um pacote de configuração.

Se copiar o ficheiro do computador de desenvolvimento para o computador de destino, apenas o ficheiro da base de dados é copiado. Tem de garantir manualmente que todos os ficheiros indicados na lista de referência estão disponíveis, no nível de versão correto e na mesma localização relativa no computador de destino como no computador de desenvolvimento.

Quando desenvolver aplicações de tempo de execução no Access, tenha em atenção que alguns ficheiros do sistema operativo têm de ser distribuídos com a aplicação de tempo de execução. A embalagem destes ficheiros é efetuada automaticamente pelo componente Assistente de Pacotes e Implementação do Microsoft Office 2000 Developer. Por vezes, as versões dos ficheiros incluídos dependem de outras aplicações instaladas no computador de desenvolvimento e que podem ter modificado os ficheiros do sistema operativo.

Seguir determinadas diretrizes normalmente garantirá que as versões dos ficheiros que utiliza não entrarão em conflito com os ficheiros no computador de destino quando instalar a aplicação de tempo de execução. Eis as orientações:

  1. Desenvolva a base de dados do Access em qualquer computador.
  2. Crie um ambiente de computador onde o disco rígido tenha sido reformatado e onde só seja instalada a versão mais antiga do sistema operativo aplicável, do Office e do Office 2000 Developer. Execute o Assistente de Pacote e Implementação neste computador para criar a versão de tempo de execução da aplicação. Isto garante que os níveis de revisão dos ficheiros funcionarão em qualquer um dos computadores de destino.
  3. Crie um ambiente de computador onde o disco rígido tenha sido reformatado e onde apenas o sistema operativo esteja instalado. Teste a aplicação de tempo de execução neste ambiente.
    • Se a aplicação não for executada com êxito, sabe que existe algo de errado com a própria aplicação. Tem de identificar e corrigir o problema antes de distribuir a aplicação.
    • Se a aplicação funcionar com êxito no computador de teste, mas não funcionar no computador de destino, sabe que existe algo de errado no computador de destino em vez da aplicação. Tem de identificar e corrigir a causa provável no computador de destino, provavelmente uma incompatibilidade ou um ficheiro corrompido.

Atualizar a lista de referências

Se o problema de referência envolver um controlo ActiveX, por vezes pode resolver o problema atualizando a lista de referências. Para atualizar a lista de referências:

  1. No Visual Basic Editor, clique em Referências no menu Ferramentas.
  2. Na caixa de diálogo Referências, clique para selecionar uma referência que ainda não está selecionada, tome nota da referência que seleciona e, em seguida, clique em OK.
  3. No menu Ferramentas, clique novamente em Referências.
  4. Clique para cancelar a seleção da referência e clique em OK.

Distribuir ficheiros de base de dados que têm controlos ActiveX

Existem dois tipos de licenças para controlos ActiveX: uma licença de alteração de estrutura e uma licença de tempo de execução.

  • Uma licença de alteração de estrutura permite-lhe inserir controlos ActiveX licenciados do Office 2000 Developer em formulários e relatórios numa base de dados do Access.
  • Uma licença de tempo de execução permite-lhe utilizar os controlos ActiveX numa base de dados do Access num computador que não tenha o Office 2000 Developer instalado, mas uma licença de tempo de execução não lhe permite inserir novos controlos ActiveX licenciados. Para instalar uma licença de tempo de execução, distribua os controlos ActiveX ao utilizar o Assistente de Pacote e Implementação, que escreve a licença para os controlos no registo do computador de destino.

Um sinalizador em falta, que poderá ver quando abrir um módulo na vista Estruturar e, em seguida, clicar em Referências no menu Ferramentas, indica que a referência ao controlo de Caixa de Diálogo Comum no computador de destino não corresponde à origem no ficheiro de base de dados a partir do computador de desenvolvimento.

Se distribuir um ficheiro de base de dados sem instalar o controlo de Caixa de Diálogo Comum distribuível, a referência do controlo poderá estar sinalizada como Em falta ou poderá receber uma mensagem de erro a dizer "Não tem a licença necessária para utilizar este controlo ActiveX" se o controlo não distribuível já estiver instalado no computador de destino.

Mesmo quando o ficheiro de base de dados faz parte de uma aplicação de tempo de execução, poderá receber a mensagem de erro a dizer "Não tem a licença necessária para utilizar este controlo ActiveX" se o controlo não distribuível que já está instalado no computador de destino for de uma versão posterior do controlo fornecido pela sua aplicação de tempo de execução. Este problema pode ocorrer porque o programa de Configuração não substitui versões posteriores de um ficheiro por uma versão anterior do mesmo ficheiro.

Voltar a registar um ficheiro

É possível que um ficheiro esteja na lista de referências sem ser registado corretamente no registo. Se suspeitar que é este o caso, siga estes passos para voltar a registar o ficheiro:

  1. No Microsoft Windows NT 4.0, clique em Início, aponte para Localizar e, em seguida, clique em Ficheiros ou Pastas, ou no Windows 2000, clique em Início, aponte para Procurar e, em seguida, clique em Para Ficheiros e Pastas.
  2. Na caixa Nome ou na caixa Procurar ficheiros e pastas pelo nome, escreva regsvr32.exe.
  3. Na caixa Procurar em, clique na raiz do disco rígido (normalmente C:).
  4. Clique para selecionar a caixa de verificação Incluir subpastas quando ainda não estiver selecionada e, em seguida, clique em Encontrar Agora ou Procurar Agora.
  5. Depois de encontrar o ficheiro, clique em Iniciar, clique em Executar e, em seguida, elimine tudo o que estiver na caixa Abrir.
  6. Arraste o ficheiro Regsvr32.exe do painel de resultados de pesquisa para a caixa Abrir.
  7. Repita os passos 2 a 6, desta vez, procure FileName.dll, em que FileName é o nome do ficheiro que pretende voltar a registar.
  8. Quando o FileName.dll ficheiro estiver na caixa Abrir com o ficheiro Regsvr32.exe, clique em OK.
  9. No Access, teste para ver se o problema ainda existe.

Se não tiver o ficheiro Regsvr32.exe no seu computador, procure o ficheiro noutros computadores pelo ficheiro. Se o ficheiro não estiver disponível, pode obter o ficheiro a partir do site da Microsoft.

Nota

Lembre-se de compilar todos os módulos depois de ajustar as referências. Para compilar todos os módulos, com o módulo ainda aberto, clique em Compilar base de dados no menu Depurar. Se os módulos não compilarem, poderão haver referências não resolvida adicionais.