sql >> Base de Datos >  >> RDS >> Access

Búsqueda de mensajes de número de error de acceso

¿Alguna vez ha tenido un número de error de acceso, pero no el mensaje de error que explica qué es?

El AccessError() La función es una forma rápida de obtener el mensaje de error asociado con un número de error de acceso:

El carácter marcador de posición de la tubería

El carácter de barra vertical (| ) es una barra vertical (disponible a través de [Mayús] + [\] {barra invertida} en un teclado en inglés).

La función AccessError usa este carácter como marcador de posición para texto específico de la instancia en un mensaje de error.

Por ejemplo, el error de acceso 3211 es "... no se pudo bloquear la tabla '|' ..."  El carácter de barra vertical en el mensaje genérico se reemplaza con la cadena real que se usó en la línea de código que generó el mensaje de error:

Documentación Oficial

La función AccessError es en realidad un método del objeto Access.Application. Aquí hay una descripción de lo que hace de la documentación oficial:

Puede usar el Error de acceso método para devolver la cadena descriptiva asociada con un error de Microsoft Access o Data Access Objects (DAO).

Vale la pena señalar que este es un Microsoft Acceso específico función. En otras palabras, no podrá llamarlo desde otra aplicación de Office, como Excel o Word.*

(* Esto no es técnicamente cierto.  Podría crear un objeto de aplicación de acceso a través de COM en cualquier entorno de VBA y luego poder llamar al método AccessError desde ese objeto.  Por supuesto, eso solo sería útil si quisiera verificar Cadenas de mensajes de error específicas de acceso en esa otra aplicación de Office, lo que parece poco probable).

Casos de uso

Honestamente, no recuerdo haber usado este método dentro del código de mi aplicación.

Esta es una función que utilizo casi exclusivamente desde la ventana Inmediato cuando solo quiero una forma rápida de determinar qué representa un número de error de acceso.

Esto sería más útil si se encontrara con un controlador de errores que tuviera un Select Case Err.Number bloque y todos los Case individuales las declaraciones usaban números sin comentarios adjuntos, como este:

    Select Case Err.Number
    Case 2452   
        'Do something
    Case 2455   
        'Do a different thing
    Case 2467   
        'Do something else
    End Select

Armado con el método AccessError, podría mejorar este código agregando un comentario con una breve descripción de cada número de error:

    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

Consideraciones sobre la integración de la base de datos de errores

Si está utilizando una base de datos de errores, como FogBugz, que ofrece una función para agrupar errores en función de su descripción, es posible que desee utilizar el genérico mensaje de error en el asunto del informe de error (o cualquier campo que haga la agrupación) y capture el específico mensaje de error en el campo de detalles del evento de error.

Analizo este problema en el contexto de mi función personalizada de lanzamiento de errores aquí:Lanzamiento de errores en VBA:problemas de integración de la base de datos de errores.

Artículos referenciados

Lanzar errores en VBA Presentamos una alternativa sin fricciones a Err.Raise. Ya no apareceMike Wolfe