IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Gestion d'erreur / Erreur souhaitée, mais absente :(


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut Gestion d'erreur / Erreur souhaitée, mais absente :(
    Bonjour,

    je travail sous VB2005, mon problème est je fait des insertions dans une base et que j'aimerais attraper le message d'erreur correspondant à un refus d'insertion afin de pop un msgbox à l'utilisateur.
    Le code était à la base celui d'Access et cela marchait sans soucis, mais en VB2005 je ne sais pas trop comment faire.

    (Sous SQL serveur un refus d'insertion ca donne ca:
    Serveur : Msg 2601, Niveau 14, État 3, Ligne 1
    Impossible d'insérer une ligne de clé en double dans l'objet 'canal' avec un index unique 'canal_reference'.
    L'instruction a été arrêtée.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    Public Function Insertion(ByVal num, ByVal reference, ByVal code, ByVal libelle) As Integer
    (Toutes les déclarations qui vont bien ...)
     
    On Error GoTo ErreurExec
    Select Case num
    Case 0
    ...
    Case 1
    ...
    End Select
     
    StrSql = "INSERT INTO canal VALUES (...)
     
    Dim cmd As New OdbcCommand(StrSql, New OdbcConnection(ChoixPC(ComboBox1.SelectedItem)))
     
    Insertion = 1
    Exit Function
     
    ErreurExec:
    If Err.Number = 3146 Then
    MsgBox("Le canal " & codephysique & " existe déjà dans le site " & reference & ".")
    Insertion = 1
    Else
    MsgBox("Erreur d'execution. Appeler votre administrateur.")
    Insertion = 0
    End If
     
    End Function
    Voilà, en espérant avoir vite une réponse (constructive) ^^

  2. #2
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    On Error Goto est franchement depasse et non recommande avec .net
    Utilise les Try Catch beaucoup plus souple et performant.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Désolé pour le temps de réponse, mais après 17h je suis plus au boulot ^^

    Je suis donc parti sur un try catch , mais je ne trouve pas quoi "catcher" comme exception, si j'affiche err.number cela me retourne 0 (pas d'erreur donc) et les INSERT ne se font pas pour autant dans ma base.

    Je retourne fouiller dans les entrailles du VB pour trouver une solution

  4. #4
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Toutes les infos pour gerer les exceptions ici :
    http://msdn.microsoft.com/fr-fr/libr...cx(VS.80).aspx

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Humm je suis désolé mais je vois toujours pas quoi "catcher" puisque je n'ai pas d'erreur en retour donc meme en mettant:
    catch "TousSkiBouge" as TousSkiBougeException ...
    je ne pense pas avoir d'erreur de la part du try.

    j'effectue mon insert dans mon try, mais réussi ou non, aucune erreur ne se déclenche ...

    ou alors j'aurais bien %*$#! dans mon copier coller

  6. #6
    Membre Expert Avatar de Danyel
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2005
    Messages
    1 699
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 699
    Par défaut
    Citation Envoyé par biglargest3 Voir le message
    j'effectue mon insert dans mon try, mais réussi ou non, aucune erreur ne se déclenche ...
    Dans ce cas, as-tu verifie que ta commande sql est correcte et/ou si les valeurs que tu lui envoi sont aussi correctes.

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Citation Envoyé par biglargest3 Voir le message
    Bonjour,

    (Sous SQL serveur un refus d'insertion ca donne ca:
    Serveur : Msg 2601, Niveau 14, État 3, Ligne 1
    Impossible d'insérer une ligne de clé en double dans l'objet 'canal' avec un index unique 'canal_reference'.
    L'instruction a été arrêtée.)
    Comme j'avais dit dans mon premier post, la requête est correcte mais il s'agit juste de la contrainte "d'unicité" qui empêche l'ajout et c'est CETTE erreur que je ne reçoit pas en VB (En fait je doit afficher un msg pour l'utilisateur: "Canal déjà existant ...")

    franchement je comprend pas pourquoi en vb6 (access) l'erreur SQL lui est retournée et pas en VB2005

  8. #8
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    dis, juste une question, comme ca....

    c'est l'integralite de ton code, que tu as colle ???

    parce que si c'est le cas, il te manque quelques morceaux, comme le ExecuteNonQuery sur ton OdbcCommand et les open/close sur ta connexion...

    sinon, normalement, il te remonte bien l'erreur dans le try/catch...peux-tu poster ton code complet pour la routine, avec le try/catch au lieu du on error goto ?

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Try
                Select Case (qui va initialiser les variables pour l'insert)
                End Select
     
                StrSql = "INSERT INTO canal (Toute les variables qui vont bien)"
     
     
                Dim cmd As New OdbcCommand
                Dim MyConnexion As New OdbcConnection(ChoixPC(ComboBox1.SelectedItem))
                MyConnexion.Open()
                cmd.Connection = MyConnexion
                Msgbox("connection execute")
                cmd.CommandText = StrSql
                Msgbox("command.text execute")
                'cmd.ExecuteNonQuery()  --------------------  C'est lui qui me manquait
                MyConnexion.Close()
     
                InsertionTélécommandeGigaveille = 1
                Exit Function
     
            Catch ex As OdbcException
                If Err.Number = 5 Then
                    MsgBox("Le canal " & codephysique & " existe déjà dans le site " & reference & ".")
                    InsertionTélécommandeGigaveille = 1
                Else
                    MsgBox("Erreur d'execution. Appeler votre administrateur.")
                    InsertionTélécommandeGigaveille = 0
                End If
            End Try

    Hou alors toi t'as l'oeil fin Ghislain !
    Comme tu peut le voir sur mon bout de code (oué je suis faché avec les code complet ) j'avais oublié le ExecuteNonQuery !!!
    Bien joué Smarties !

    par contre si vous aviez une référence comme site pour ce qui est des codes erreurs je suis preneur
    (parceque le 5 qui m'est retourné je ne sais pas trop à quoi il correspond)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP et PostgreSQL] erreur de pg_exec mais requete valide
    Par guipom dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 25/03/2005, 19h03
  2. PHP SQL =>erreur de syntaxe (operateur absent)
    Par snipes dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/02/2005, 14h09
  3. Erreur avec IE mais pas avec Netscape
    Par Oluha dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/02/2005, 15h15
  4. gestion d'une erreur
    Par Jeannotc dans le forum Bases de données
    Réponses: 8
    Dernier message: 25/06/2004, 18h04
  5. Réponses: 2
    Dernier message: 23/09/2003, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo