Partager via


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.

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.