OVH Cloud OVH Cloud

"Trapper" une exception

3 réponses
Avatar
Annie L.
J'ai dans une table de MS Access, un champ indexé sans doublons.
Lorsque j'enregistre une donnée dans ce champs et que la donnée est
identique à une autre, le programme en VB 2003 lève une exception "Doublon
dans un index ....". J'aimerais pouvoir intercepter cette exception par son
nom et son numéro (S'il y a lieu) et comment procéder.

Try

traitement....

Catch objException As Exception


c'est le mot Exception qui devrait être remplacé normallement. Je n'y
connais pas grand chose dans le "trappage" d'exception et comment procéder.

Merci de votre aide!

3 réponses

Avatar
Mathieu Francesch
Bonsoir Annie,

Comment mettez vous à jours vos données ?

Par exemple, si c'est au travers d'un datagridview, pour gérer les erreurs
lors de la saisie des données, on utilise l'évenement DataGridView_DataError.

Ce qui donne :

Private Sub ClientDataGridView_DataError(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles
ClientDataGridView.DataError
If Not e.Exception Is Nothing AndAlso e.Context =
DataGridViewDataErrorContexts.Commit Then
MessageBox.Show(e.Exception.Message)
End If
End Sub

Utiliser le paramètre objet e, pour affiner le message d'erreur.

Bonne soirée,
--
Cordialement,

Mathieu Francesch



"Annie L." a écrit :

J'ai dans une table de MS Access, un champ indexé sans doublons.
Lorsque j'enregistre une donnée dans ce champs et que la donnée est
identique à une autre, le programme en VB 2003 lève une exception "Doublon
dans un index ....". J'aimerais pouvoir intercepter cette exception par son
nom et son numéro (S'il y a lieu) et comment procéder.

Try

traitement....

Catch objException As Exception


c'est le mot Exception qui devrait être remplacé normallement. Je n'y
connais pas grand chose dans le "trappage" d'exception et comment procéder.

Merci de votre aide!


Avatar
Annie L.
Premièrement, j'utilise Visual Basic 2003!

Deuxièmement, je mets mes données à jour par le code (à la mitaine)!

Je répète ma question :

J'utilise..

TRY

traitement des données (enregistrement dans la table).....

Catch objException As Exception

ou bien...

Catch objException As System.Data.OleDb.OleDbException

mais cette dernière exception gère toutes les erreurs d'accès aux données
via ADO.NET (MS Access). Je voudrais "trapper" l'exception pour l'erreur
"Doublon dans un index..." seulement, car je dois être très précis dans cette
gestion d'erreur!

Est-ce que je suis plus explicite dans ma question..!

Et existe-t-il une liste des exceptions?

Merci beaucoup de votre aide!




"Mathieu Francesch" wrote:

Bonsoir Annie,

Comment mettez vous à jours vos données ?

Par exemple, si c'est au travers d'un datagridview, pour gérer les erreurs
lors de la saisie des données, on utilise l'évenement DataGridView_DataError.

Ce qui donne :

Private Sub ClientDataGridView_DataError(ByVal sender As Object, ByVal e As
System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles
ClientDataGridView.DataError
If Not e.Exception Is Nothing AndAlso e.Context =
DataGridViewDataErrorContexts.Commit Then
MessageBox.Show(e.Exception.Message)
End If
End Sub

Utiliser le paramètre objet e, pour affiner le message d'erreur.

Bonne soirée,
--
Cordialement,

Mathieu Francesch



"Annie L." a écrit :

> J'ai dans une table de MS Access, un champ indexé sans doublons.
> Lorsque j'enregistre une donnée dans ce champs et que la donnée est
> identique à une autre, le programme en VB 2003 lève une exception "Doublon
> dans un index ....". J'aimerais pouvoir intercepter cette exception par son
> nom et son numéro (S'il y a lieu) et comment procéder.
>
> Try
>
> traitement....
>
> Catch objException As Exception
>
>
> c'est le mot Exception qui devrait être remplacé normallement. Je n'y
> connais pas grand chose dans le "trappage" d'exception et comment procéder.
>
> Merci de votre aide!


Avatar
Mathieu Francesch
Re,

Dans un premier temps afin de ne pas attraper toutes les exceptions,
on utilise "ConstraintException".

exemple :

Try
Dim TableClient As tstDataSet.ClientDataTable = TstDataSet.Client
Dim Enregistrement As tstDataSet.ClientRow = TableClient.NewClientRow
Enregistrement.id = 3
Enregistrement.nom = "Francesch"
Enregistrement.prenom = "Mathieu"
TableClient.AddClientRow(Enregistrement)
Catch ex As ConstraintException
MessageBox.Show("Problème index unique")
End Try

Je cherche si on peut affiner un peu plus ;-)

--
Cordialement,

Mathieu Francesch



"Annie L." a écrit :

Premièrement, j'utilise Visual Basic 2003!

Deuxièmement, je mets mes données à jour par le code (à la mitaine)!

Je répète ma question :

J'utilise..

TRY

traitement des données (enregistrement dans la table).....

Catch objException As Exception

ou bien...

Catch objException As System.Data.OleDb.OleDbException

mais cette dernière exception gère toutes les erreurs d'accès aux données
via ADO.NET (MS Access). Je voudrais "trapper" l'exception pour l'erreur
"Doublon dans un index..." seulement, car je dois être très précis dans cette
gestion d'erreur!

Est-ce que je suis plus explicite dans ma question..!

Et existe-t-il une liste des exceptions?

Merci beaucoup de votre aide!




"Mathieu Francesch" wrote:

> Bonsoir Annie,
>
> Comment mettez vous à jours vos données ?
>
> Par exemple, si c'est au travers d'un datagridview, pour gérer les erreurs
> lors de la saisie des données, on utilise l'évenement DataGridView_DataError.
>
> Ce qui donne :
>
> Private Sub ClientDataGridView_DataError(ByVal sender As Object, ByVal e As
> System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles
> ClientDataGridView.DataError
> If Not e.Exception Is Nothing AndAlso e.Context =
> DataGridViewDataErrorContexts.Commit Then
> MessageBox.Show(e.Exception.Message)
> End If
> End Sub
>
> Utiliser le paramètre objet e, pour affiner le message d'erreur.
>
> Bonne soirée,
> --
> Cordialement,
>
> Mathieu Francesch
>
>
>
> "Annie L." a écrit :
>
> > J'ai dans une table de MS Access, un champ indexé sans doublons.
> > Lorsque j'enregistre une donnée dans ce champs et que la donnée est
> > identique à une autre, le programme en VB 2003 lève une exception "Doublon
> > dans un index ....". J'aimerais pouvoir intercepter cette exception par son
> > nom et son numéro (S'il y a lieu) et comment procéder.
> >
> > Try
> >
> > traitement....
> >
> > Catch objException As Exception
> >
> >
> > c'est le mot Exception qui devrait être remplacé normallement. Je n'y
> > connais pas grand chose dans le "trappage" d'exception et comment procéder.
> >
> > Merci de votre aide!