Erreurs du fournisseur
Lorsqu’une erreur de fournisseur se produit, une erreur d’exécution -2147467259 est renvoyée. Lorsque vous recevez cette erreur, vérifiez la collection Errors de l’objet Connection actif, qui contient une ou plusieurs erreurs décrivant ce qui s’est produit.
Collection d’erreurs ADO
Étant donné qu’une opération ADO particulière peut produire plusieurs erreurs de fournisseur, ADO expose une collection d’objets d’erreur via l’objet Connection. Cette collection ne contient aucun objet si une opération se termine correctement, et contient un ou plusieurs objets Error si un problème s’est produit et que le fournisseur a déclenché une ou plusieurs erreurs. Examinez chaque objet d’erreur pour déterminer la cause exacte de l’erreur.
Dès que vous avez fini de gérer les erreurs qui se sont produites, vous pouvez effacer la collection en appelant la méthode Clear. Il est particulièrement important d’effacer explicitement la collection Errors avant d’appeler la méthode Resync, UpdateBatch ou CancelBatch sur un objet Recordset, la méthode Open sur un objet Connection ou de définir la propriété Filter sur un objet Recordset. En désactivant explicitement la collection, vous pouvez être certain que tous les objets Error de la collection ne sont pas conservés suite à une opération préalable.
Certaines opérations peuvent générer des avertissements en plus des erreurs. Les avertissements sont également représentés par des objets Error dans la collection Errors. Lorsqu’un fournisseur ajoute un avertissement à la collection, il ne génère pas d’erreur d’exécution. Vérifiez la propriété Count de la collection Errors pour déterminer si un avertissement a été généré par une opération particulière. Si le nombre est de 1 ou une valeur supérieure, un objet Error a été ajouté à la collection. Dès que vous avez déterminé que la collection Errors contient des erreurs ou des avertissements, vous pouvez itérer dans la collection et récupérer des informations sur chaque objet Error qui s’y trouve. L’exemple Visual Basic suivant illustre cela :
' 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 routine de gestion des erreurs inclut une boucle For Each qui examine chaque objet dans la collection Errors. Dans cet exemple, elle accumule un message à afficher. Dans un programme de travail, vous devez écrire du code pour effectuer une tâche appropriée pour chaque erreur, comme fermer tous les fichiers ouverts et arrêter le programme de manière appropriée.
L’objet Error
En examinant un objet Error, vous pouvez déterminer l’erreur qui s’est produite, et plus important, quelle application ou quel objet a provoqué l’erreur. L’objet Error comporte les propriétés suivantes :
Nom de la propriété | Description |
---|---|
Description | Une description textuelle de l’erreur qui s’est produite. |
HelpContext, HelpFile | Fait référence à la rubrique d’aide et au fichier d’aide qui contiennent une description de l’erreur qui s’est produite. |
NativeError | Le numéro d’erreur spécifique au fournisseur. |
Nombre | Entier long qui représente le nombre (répertorié dans ErrorValueEnum) de l’erreur qui s’est produite. |
Source | Indique le nom de l’objet ou de l’application qui a généré une erreur. |
SQLState | Code d’erreur à cinq caractères retourné par le fournisseur pendant le processus d’une instruction SQL. |
L’objet Error ADO est très similaire à l’objet Err Visual Basic standard. Ses propriétés décrivent l’erreur qui s’est produite. En plus du numéro de l’erreur, vous recevez également deux informations connexes. La propriété NativeError contient un numéro d’erreur propre au fournisseur que vous utilisez. Dans l’exemple précédent, le fournisseur est le fournisseur Microsoft OLE DB pour SQL Server. NativeError contient donc des erreurs spécifiques à SQL Server. La propriété SQLState a un code à cinq lettres qui décrit une erreur dans une instruction SQL.
Erreurs liées aux événements
L’objet Error est également utilisé lorsque des erreurs liées à l’événement se produisent. Vous pouvez déterminer si une erreur s’est produite dans le processus qui a déclenché un événement ADO en vérifiant l’objet Error passé en tant que paramètre d’événement.
Si l’opération qui provoque la fin d’un événement se termine correctement, le paramètre adStatus du gestionnaire d’événements est défini sur adStatusOK. En revanche, si l’opération qui a déclenché l’événement a échoué, le paramètre adStatus est défini sur adStatusErrorsOccurred. Dans ce cas, le paramètre pError contient un objet Error qui décrit l’erreur.