Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los errores de ADO se notifican al programa como errores en tiempo de ejecución. Puede usar el mecanismo de captura de errores del lenguaje de programación para capturarlos y controlarlos. Por ejemplo, en Visual Basic, use la instrucción On Error . En Visual C++, depende del método que use para acceder a las bibliotecas de ADO. Con #import, use un bloque de try-catch. De lo contrario, los programadores de C++ deben recuperar explícitamente el objeto de error llamando a GetErrorInfo. El siguiente procedimiento Sub de Visual Basic demuestra cómo manejar un error de ADO:
' BeginErrorHandlingVB01
Private Sub Form_Load()
' Turn on error handling
On Error GoTo FormLoadError
'Open the database and the recordset for processing.
'
Dim strCnn As String
strCnn = "Provider=sqloledb;" & _
"Data Source=a-iresmi2000;" & _
"Initial Catalog=Northwind;Integrated Security=SSPI"
' cnn is a Public Connection Object because
' it was defined WithEvents
Set cnn = New ADODB.Connection
cnn.Open strCnn
' The next line of code intentionally causes
' an error by trying to open a connection
' that has already been opened.
cnn.Open strCnn
' rst is a Public Recordset because it
' was defined WithEvents
Set rst = New ADODB.Recordset
rst.Open "Customers", cnn
Exit Sub
' Error handler
FormLoadError:
Dim strErr As String
Select Case Err
Case adErrObjectOpen
strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf
strErr = strErr & "Error reported by: " & Err.Source & vbCrLf
strErr = strErr & "Help File: " & Err.HelpFile & vbCrLf
strErr = strErr & "Topic ID: " & Err.HelpContext
MsgBox strErr
Debug.Print strErr
Err.Clear
Resume Next
' If some other error occurs that
' has nothing to do with ADO, show
' the number and description and exit.
Case Else
strErr = "Error #" & Err.Number & ": " & Err.Description & vbCrLf
MsgBox strErr
Debug.Print strErr
Unload Me
End Select
End Sub
' EndErrorHandlingVB01
Este Form_Load procedimiento de evento crea intencionadamente un error intentando abrir el mismo objeto Connection dos veces. La segunda vez que se llama al método Open , se activa el controlador de errores. En este caso, el error es de tipo adErrObjectOpen, por lo que el controlador de errores muestra el siguiente mensaje antes de reanudar la ejecución del programa:
Error #3705: Operation is not allowed when the object is open.
Error reported by: ADODB.Connection
Help File: E:\WINNT\HELP\ADO260.CHM Topic ID: 1003705
El mensaje de error incluye cada fragmento de información proporcionada por el objeto Err de Visual Basic, excepto el valor LastDLLError , que no se aplica aquí. El número de error indica qué error se ha producido. La descripción es útil en los casos en los que no desea controlar el error usted mismo. Puede simplemente pasárselo al usuario. Aunque normalmente querrá usar mensajes personalizados para la aplicación, no puede prever todos los errores; la descripción proporciona alguna pista sobre lo que salió mal. En el código de ejemplo, el objeto Connection notificó el error. Aquí verá el tipo o el identificador de programación del objeto, no un nombre de variable.
Nota:
El objeto Err de Visual Basic solo contiene información sobre el error más reciente. La colección Errores de ADO del objeto Connection contiene un objeto Error para cada error generado por la operación de ADO más reciente. Use la colección Errors en lugar del objeto Err para controlar varios errores. Para obtener más información sobre la colección Errors , vea Errores del proveedor. Sin embargo, si no hay ningún objeto Connection válido, el objeto Err es el único origen para obtener información sobre los errores de ADO.
¿Qué tipos de operaciones pueden provocar errores de ADO? Los errores comunes de ADO pueden implicar abrir un objeto como Connection o Recordset, intentar actualizar datos o llamar a un método o propiedad que no sea compatible con el proveedor.
Los errores OLE DB también se pueden pasar a la aplicación como errores en tiempo de ejecución en la colección Errors .
En el tema siguiente se proporciona más información sobre los errores de ADO.