Compartir a través de


Errores de proveedor

Se aplica a: Access 2013, Office 2013

Cuando se produce un error de proveedor, se devuelve un error en tiempo de ejecución de -2147467259. Si recibe este error, revise la colección Errors del objeto Connection activo, que contendrá uno o más errores que describen lo qué ocurrió.

La colección Errors de ADO

Dado que una operación de ADO determinada puede causar varios errores de proveedor, ADO expone una colección de objetos de error a través del objeto Connection. Esta colección no contiene ningún objeto si una operación se completa correctamente, y contiene uno o más objetos Error si algo fue mal y el proveedor generó uno o más errores. Examine cada objeto de error individual para determinar la causa exacta del error.

Cuando haya terminado de tratar 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 Errors antes de llamar al método Resync, UpdateBatch o CancelBatch para un objeto Recordset, al método Open para un objeto Connection, o de establecer la propiedad Filter para un objeto Recordset. Si borra la colección explícitamente, podrá tener la seguridad de que no quedan objetos Error en la colección de una operación anterior.

Algunas operaciones pueden generar tanto advertencias como 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. Revise la propiedad Contar de la colección Errors para determinar si una advertencia fue generada por una operación determinada. Si el recuento es uno o una cifra mayor, significa que se ha agregado un objeto Error a la colección. Una vez que haya determinado que la colección Errors contiene errores o advertencias, puede recorrer la colección en iteración y recuperar información acerca de cada uno de los objetos Error que contiene. En el siguiente ejemplo breve de Visual Basic, se muestra esto:

 
' 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, simplemente acumula un mensaje para presentación. 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 una forma ordenada.

El objeto Error

Examinando un objeto Error, se puede determinar qué error se produjo y, lo que es más importante, la aplicación o el objeto que provocó el error. El objeto Error tiene las propiedades siguientes:

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.

Number

Entero largo que representa el número (enumerado en ErrorValueEnum) del error que se produjo.

Source

Indica el nombre del objeto o aplicación que generó un error.

Sqlstate

Código de error de cinco caracteres que el proveedor devuelve durante el proceso de una instrucción SQL.

El objeto Error de ADO es bastante similar al objeto Err estándar de Visual Basic. Sus propiedades describen el error producido. Además del número del error, también se reciben dos informaciones relacionadas. La propiedad NativeError contiene un número de error específico del proveedor que utilice. En el ejemplo anterior, el proveedor es el proveedor de Microsoft OLE DB para SQL Server, de forma que NativeError contendrá errores específicos de SQL Server. La propiedad SQLState consiste en un código de cinco letras que describe un error en una instrucción SQL.

El objeto Error también se utiliza cuando se producen errores relacionados con un evento. Para determinar si un error se produjo en el proceso que desencadenó un evento de ADO, revise el objeto Error pasado como un parámetro de evento.

Si la operación que provoca un evento finaliza 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.