Access
 sql >> Base de Dados >  >> RDS >> Access

Consulta de mensagem de número de erro de acesso


Você já teve um número de erro do Access, mas não a mensagem de erro que explica o que é?

O AccessError() A função é uma maneira rápida de obter a mensagem de erro associada a um número de erro do Access:

O caractere de espaço reservado para pipe


O caractere pipe (| ) é uma barra vertical (disponível via [Shift] + [\] {barra invertida} em um teclado em inglês).

A função AccessError usa esse caractere como um espaço reservado para texto específico da instância em uma mensagem de erro.

Por exemplo, o erro de acesso 3211 é "... não foi possível bloquear a tabela '|' ..."  O caractere de barra vertical na mensagem genérica é substituído pela string real que foi usada na linha de código que gerou a mensagem de erro:

Documentação oficial


A função AccessError é, na verdade, um método do objeto Access.Application. Aqui está uma descrição do que ele faz na documentação oficial:
Você pode usar o AccessError método para retornar a string descritiva associada a um erro do Microsoft Access ou Data Access Objects (DAO).

Vale a pena notar que este é um Microsoft Especifico de acesso função. Em outras palavras, você não poderá chamá-lo de outro aplicativo do Office, como Excel ou Word.*

(* Isso não é tecnicamente verdade.  Você pode criar um objeto Aplicativo de Acesso via COM em qualquer ambiente VBA e então chamar o método AccessError desse objeto.  Claro, isso só seria útil se você quisesse verificar Cadeias de mensagens de erro específicas de acesso nesse outro aplicativo do Office, o que parece improvável.)

Casos de uso


Honestamente, não consigo me lembrar de usar esse método dentro do código do meu aplicativo.

Esse é um recurso que uso quase exclusivamente na janela imediata quando quero apenas uma maneira rápida de determinar o que representa um número de erro do Access.

Isso seria mais útil se você encontrasse um manipulador de erros que tivesse um Select Case Err.Number bloco e todo o Case individual declarações usaram números sem comentários, como este:
    Select Case Err.Number
    Case 2452   
        'Do something
    Case 2455   
        'Do a different thing
    Case 2467   
        'Do something else
    End Select

Armado com o método AccessError, você pode melhorar este código adicionando um comentário com uma breve descrição de cada número de erro:
    Select Case Err.Number
    Case 2452   'invalid reference to the Parent property
        'Do something
    Case 2455   'invalid reference to the property
        'Do a different thing
    Case 2467   'expr refers to object that is closed or doesn't exist
        'Do something else
    End Select

Considerações sobre integração de banco de dados de bug


Se você estiver usando um banco de dados de bugs – como o FogBugz – que oferece um recurso para agrupar erros com base em sua descrição, você pode querer usar o genérico mensagem de erro no assunto do relatório de bug (ou qualquer campo que faça o agrupamento) e capture o específico mensagem de erro no campo de detalhes do evento de bug.

Eu discuto esse problema no contexto da minha função de lançamento de erro personalizado aqui:Lançando erros no VBA:problemas de integração de banco de dados de bugs.

Artigos referenciados

Lançando erros no VBAIntroduzindo uma alternativa sem atrito para Err.Raise. Não é mais definidoMike Wolfe