Compartir vía


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.

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.