Erreurs du fournisseur
Lorsqu’une erreur de fournisseur se produit, une erreur d’exécution de -2147467259 est retournée. Lorsque vous recevez cette erreur, vérifiez la collection Errors de l'objet Connection actif, qui contiendra 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 générer 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 conclut avec succès et contient une ou plusieurs erreurs objets, 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 terminé 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 de supprimer explicitement la collection Errors avant d’appeler la Resync, UpdateBatchou méthode CancelBatch sur un objet Records et, la méthode Open sur un objet Connection, ou définissez la propriété Filter sur un objet Recordset. En vidant explicitement la collection, vous pouvez être certain que tous les objets d'erreur de la collection ne proviennent pas d'une opération précédente.
Certaines opérations peuvent générer des avertissements en plus des erreurs. Les avertissements sont également représentés par des objets d'erreur dans la collection d'erreurs . 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 supérieur ou égal à un, un objet d'erreur a été ajouté à la collection. Dès que vous avez déterminé que la collection Errors contient des erreurs ou des avertissements, vous pouvez parcourir la collection et récupérer des informations sur chaque objet Error qu’elle contient. L’exemple visual Basic suivant illustre ceci :
' 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, il accumule un message à afficher. Dans un programme de travail, vous devez écrire du code pour effectuer une tâche appropriée pour chaque erreur, par exemple fermer tous les fichiers ouverts et arrêter le programme de manière ordonnée.
Objet Erreur
En examinant un objet Error, vous pouvez déterminer quelle erreur s’est produite, et plus important, quelle application ou quel objet a provoqué l’erreur. L’objet Error a les propriétés suivantes :
Nom de la propriété | Description |
---|---|
Description | 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 | Numéro d’erreur spécifique au fournisseur. |
nombre | Entier long qui représente le nombre (répertorié dans la 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 ADO Error est très similaire à l’objet standard Visual Basic Err. Ses propriétés décrivent l’erreur qui s’est produite. En plus du nombre d’erreurs, vous recevez également deux informations connexes. La propriété NativeError contient un numéro d’erreur spécifique au fournisseur que vous utilisez. Dans l’exemple précédent, le fournisseur est le fournisseur Microsoft OLE DB pour SQL Server. Par conséquent, NativeError contiendra des erreurs spécifiques à SQL Server. La propriété SQLState contient un code à cinq lettres qui décrit une erreur dans une instruction SQL.
Erreurs Event-Related
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 a abouti, 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 Error qui décrit l’erreur.