Errores de proveedor
Cuando se produce un error de proveedor, se devuelve un error en tiempo de ejecución de -2147467259. Cuando reciba este error, compruebe la colección Errores del objeto Connection activo, que contendrá uno o varios errores que describen lo que ocurrió.
La colección de errores de ADO
Dado que una operación determinada de ADO puede producir múltiples errores de proveedor, ADO presenta una colección de objetos de error mediante el objeto Connection de. Esta colección no contiene objetos si una operación finaliza correctamente y contiene uno o varios Error objetos si algo salió mal y el proveedor generó uno o varios errores. Examine cada objeto de error para determinar la causa exacta del error.
En cuanto haya terminado de controlar los errores que se hayan producido, puede borrar la colección llamando al método Clear. Es especialmente importante borrar explícitamente la colección de Errores antes de llamar al método Resync, UpdateBatcho CancelBatch en un objeto Recordset, al método Open en un objeto Connection, o establecer la propiedad Filter en un objeto Recordset. Al borrar explícitamente la colección, puede estar seguro de que los objetos de Error y Error en la colección no son residuos de una operación anterior.
Algunas operaciones pueden generar advertencias además de errores. Las advertencias también se representan mediante objetos Error en la colección Errors. Cuando un proveedor agrega una advertencia a la colección, no genera un error en tiempo de ejecución. Compruebe la propiedad Count de la colección de Errores para determinar si una advertencia fue producida por una operación en particular. Si el recuento es uno o mayor, se ha agregado un objeto error a la colección. En cuanto haya determinado que la colección Errors contiene errores o advertencias, puede recorrer la colección y recuperar información sobre cada objeto Error que contiene. En el siguiente ejemplo corto de Visual Basic se muestra lo siguiente:
' BeginErrorHandlingVB02
Private Function DeleteCustomer(ByVal CompanyName As String) As Long
On Error GoTo DeleteCustomerError
rst.Find "CompanyName='" & CompanyName & "'"
DeleteCustomerError:
Dim objError As ADODB.Error
Dim strError As String
If cnn.Errors.Count > 0 Then
For Each objError In cnn.Errors
strError = strError & "Error #" & objError.Number & _
" " & objError.Description & vbCrLf & _
"NativeError: " & objError.NativeError & vbCrLf & _
"SQLState: " & objError.SQLState & vbCrLf & _
"Reported by: " & objError.Source & vbCrLf & _
"Help file: " & objError.HelpFile & vbCrLf & _
"Help Context ID: " & objError.HelpContext
Next
MsgBox strError
End If
End Function
' EndErrorHandlingVB02
La rutina de control de errores incluye un bucle For Each que examina cada objeto de la colección Errors. En este ejemplo, acumula un mensaje para mostrar. En un programa de trabajo, escribiría código para realizar una tarea adecuada para cada error, como cerrar todos los archivos abiertos y apagar el programa de forma ordenada.
El objeto Error
Al examinar un objeto Error puede determinar qué error se produjo y más importante, qué aplicación o qué objeto provocó el error. El objeto de error tiene las siguientes propiedades:
Nombre de propiedad | Descripción |
---|---|
descripción | Descripción del texto del error que se produjo. |
HelpContext, HelpFile | Hace referencia al tema de Ayuda y al archivo de Ayuda que contienen una descripción del error que se produjo. |
NativeError | Número de error específico del proveedor. |
número | Entero largo que representa el número (enumerado en el ErrorValueEnum) del error que se produjo. |
Fuente | Indica el nombre del objeto o aplicación que generó un error. |
sqlState | Código de error de cinco caracteres que devuelve el proveedor durante el proceso de una instrucción SQL. |
El objeto ADO Error es muy similar al objeto estándar de Visual Basic Err. Sus propiedades describen el error que se produjo. Además del número del error, también recibirá dos fragmentos de información relacionados. La propiedad NativeError contiene un número de error específico del proveedor que está usando. En el ejemplo anterior, el proveedor es el proveedor OLE DB de Microsoft para SQL Server, por lo que NativeError contendrá errores específicos de SQL Server. La propiedad SQLState tiene un código de cinco letras que describe un error en una instrucción SQL.
Errores de Event-Related
El objeto de error Error también se utiliza cuando ocurren errores relacionados con eventos. Puede determinar si se produjo un error en el proceso que generó un evento de ADO comprobando el objeto Error que se pasó como parámetro de evento.
Si la operación que provoca un evento se concluye correctamente, el parámetro adStatus del controlador de eventos se establecerá en adStatusOK. Por otro lado, si la operación que generó el evento no se realizó correctamente, el parámetro adStatus se establece en adStatusErrorsOccurred. En ese caso, el parámetro pError contendrá un objeto error que describe el error.