Objeto Error (DAO)
Se aplica a: Access 2013, Office 2013
El objeto Error contiene detalles sobre los errores de acceso a datos, cada uno de los cuales pertenece a una operación única que implica a DAO.
Comentarios
Cualquier operación que implica a DAO puede generar uno o varios errores. Por ejemplo, una llamada a un servidor ODBC puede provocar un error del servidor de base de datos, un error de ODBC o de DAO. Cuando se produce uno de estos errores, se coloca un objeto Error en la colección Errors del objeto DBEngine. Un único evento puede provocar, por lo tanto, varios objetos Error que aparecen en la colección Errors.
Cuando una operación DAO posterior genera un error, se borra la colección Errors y uno o varios objetos nuevos Error se colocan en la colección Errors. Las operaciones DAO que no generan errores no tienen efecto en la colección Errors.
El conjunto de objetos Error en la colección Errors describe un único error. El primer objeto Error es el error de nivel más bajo (el error de origen), el segundo, el error de nivel inmediatamente superior, etc. Por ejemplo, si se produce un error de ODBC mientras intenta abrir un objeto Recordset, el primer objeto Error Errors(0) contiene el nivel de error de ODBC más bajo; los errores posteriores contienen los errores de ODBC devueltos por las distintas capas de ODBC. En este caso, el administrador de controladores ODBC, y posiblemente el controlador mismo, devuelven objetos Error separados. El último objeto Error , Errors.Count-1, contiene el error DAO que indica que no se pudo abrir el objeto.
Enumerar los errores específicos en la colección Errors permite rutinas de tratamiento de errores para determinar de manera más precisa la causa de un error y seguir los pasos adecuados para la recuperación. Puede leer las propiedades del objeto Error para obtener detalles específicos sobre cada error, incluidas:
La propiedad Description, que contiene el texto de la alerta de error que se mostrará en la pantalla si no se captura el error.
La propiedad Number, que contiene el valor de tipo entero Long de la constante de error.
La propiedad Source, que identifica el objeto que ha provocado el error. Esto es especialmente útil cuando tiene varios objetos Error en la colección Errors tras una solicitud de un origen de datos ODBC.
Las propiedades HelpFile y HelpContext, que indican el archivo de Ayuda de Microsoft Windows y el tema de Ayuda adecuados, respectivamente, (si existen) para el error.
Nota:
[!NOTA] Al programar en Microsoft Visual Basic para Aplicaciones (VBA), si usa la palabra clave New para crear un objeto que provoca posteriormente un error antes de que se anexe este objeto a una colección, la colección Errors del objeto DBEngine no va a contener una entrada para este error del objeto porque el nuevo objeto no está asociado al objeto DBEngine. No obstante, la información de error está disponible en el objeto Err VBA. El código de tratamiento de errores VBA debe examinar la colección Errors siempre que prevea un error de acceso a datos.
Si está escribiendo un tratamiento de errores centralizado, compruebe el objeto Err VBA para determinar si la información de error de la colección Errors es válida. Si la propiedad Number del último elemento de la colección Errors (DBEngine.Errors.Count - 1) y el valor del objeto Err coinciden, puede usar una serie de instrucciones Select Case para identificar el error o errores de DAO concretos que se produjeron. Si no coinciden, use el método Refresh de la colección Errors.
Ejemplo
En este ejemplo se fuerza un error, se captura y se muestran las propiedades Description, Number, Source, HelpContext y HelpFile del objeto Error resultante.
Sub DescriptionX()
Dim dbsTest As Database
On Error GoTo ErrorHandler
' Intentionally trigger an error.
Set dbsTest = OpenDatabase("NoDatabase")
Exit Sub
ErrorHandler:
Dim strError As String
Dim errLoop As Error
' Enumerate Errors collection and display properties of
' each Error object.
For Each errLoop In Errors
With errLoop
strError = _
"Error #" & .Number & vbCr
strError = strError & _
" " & .Description & vbCr
strError = strError & _
" (Source: " & .Source & ")" & vbCr
strError = strError & _
"Press F1 to see topic " & .HelpContext & vbCr
strError = strError & _
" in the file " & .HelpFile & "."
End With
MsgBox strError
Next
Resume Next
End Sub