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 :

Gerer une exception SQL sous VB.net


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut Gerer une exception SQL sous VB.net
    Bonsoir,
    je suis entrain de développer une petite application pour la gestion des créances des clients d'une société mais lors de l'execuètion une erreur s'affiche auè niveau de la requete SQL
    L'exception invalidcast n'a pas ete geree
    voila le code

    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
        Private Sub but_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles but.Click
     
            If IsNumeric(debit.Text & Credit.Text) Then
                Dim i As Double
                i = Val(debit.Text) + Val(Credit.Text)
                Dim classConnex As New ParamConnexion3
                Dim cmdString As String = "UPDATE Client SET Nom ='" & ListBox1.SelectedItem & "' ,Debit ='" & debit.Text & "' ,Credit='" & Credit.Text & "',Total='" & i & "' WHERE Nom='" & ListBox1.SelectedItem & "'"
                Dim SQLCommand As New OleDbCommand(cmdString, classConnex.Connection)
                SQLCommand.ExecuteNonQuery()
                debit.Clear()
                Credit.Clear()
                MsgBox("mise a jour reussie")
            Else
                MsgBox(" debit et credit doivent etre une valeur numerique")
            End If
        End Sub


    je vouès remercie infiniment de votre aide

  2. #2
    Membre extrêmement actif

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Par défaut
    N'utilise pas "ListBox1.SelectedItem", utilise plutot ".ToString()" a la fin.
    Utilise des "Try...Catch" et n'oublie pas de fermer la connexion a ta base de données dans le "Finally".

    N'utilise pas "debit.Text", j'image que "debit" est une TextBox. Donc renomme ta TextBox en "txtDebit", il en va de meme pour les autres composants. Ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim debit, credit as Double
    If Integer.TryCast(txtDebit.Text, debit) is Nothing Or Integer.TryCast(txtCredit.Text, credit) is Nothing)
    MessageBox.Show(" debit et credit doivent etre une valeur numerique")
    Return
    End If
    '...
    Corrige tout ca et dit nous si tu as toujours une erreur, si oui, quelle ligne elle se situe.

    Bon courage

  3. #3
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut
    Citation Envoyé par alex_vino Voir le message
    N'utilise pas "ListBox1.SelectedItem", utilise plutot ".ToString()" a la fin.
    Utilise des "Try...Catch" et n'oublie pas de fermer la connexion a ta base de données dans le "Finally".

    N'utilise pas "debit.Text", j'image que "debit" est une TextBox. Donc renomme ta TextBox en "txtDebit", il en va de meme pour les autres composants. Ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim debit, credit as Double
    If Integer.TryCast(txtDebit.Text, debit) is Nothing Or Integer.TryCast(txtCredit.Text, credit) is Nothing)
    MessageBox.Show(" debit et credit doivent etre une valeur numerique")
    Return
    End If
    '...
    Bonsoir
    Merci de ton aide, jai rennomm txt debit et txt credit mais pour le try catch je ne sais pas comment les utiliser, je suis nulle en VB
    de toute facon ca m affiche toujours la meme erreur
    L'opérateur '&' n'est pas défini pour chaîne "UPDATE Client SET Nom ='System.D" et type 'DataRowView'.

    je ne sais plus quoi faire

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    pour intercepter une erreur qu'elle soit déclenchée depuis .net ou sql server il faut un try catch

    tu dis faire un logiciel pour une entreprise, mais ton code n'a pas l'air très pro ... j'espère pour l'entreprise que tu es en formation et que le code va être vérifié ...
    pour le détail :
    voir DbParameters
    ce isnumeric sur une concaténation me semble étrange, avec 2 décimaux ca ne conviendra pas)
    SelectedItem n'est pas un string et ne peut être concaténé avec un bon paramétrage de vb
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre actif
    Inscrit en
    Octobre 2010
    Messages
    56
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 56
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    pour intercepter une erreur qu'elle soit déclenchée depuis .net ou sql server il faut un try catch

    tu dis faire un logiciel pour une entreprise, mais ton code n'a pas l'air très pro ... j'espère pour l'entreprise que tu es en formation et que le code va être vérifié ...
    pour le détail :
    voir DbParameters
    ce isnumeric sur une concaténation me semble étrange, avec 2 décimaux ca ne conviendra pas)
    SelectedItem n'est pas un string et ne peut être concaténé avec un bon paramétrage de vb

    Oui effectivement, je suis une responsable commerciale dans une société mais j'essaye de développer ce logiciel pour des raisons personnelles et je compte sur votre aide pour avancer
    Merci sebastien

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    visiblement tu as mis des datarowview dans un listbox, et donc concaténer le selecteditem n'est pas possible simplement
    à mon avis tu tapes un peu au pif donc ca ne va pas etre simple de t'aider sans le code
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre extrêmement actif

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Par défaut
    Jette un coup d'oeil ici dans un 1er temps : http://plasserre.developpez.com/cours/vb-net/

    Applique au moins les bases car il y a trop a "défricher" dans ton code pour le moment

    As-tu ajouté des ToString() a toutes tes variables dans ta requete SQL? et modifier tout le reste que je t'ai dit?

    PS: Quand tu auras résolu cela tu auras une autre erreur du genre "La connexion est déja ouverte", il te faudra alors fermer SQLCommand apres la ligne SQLCommand.ExecuteNonQuery() (ou dans ton Finally si tu utilise des Try...Catch, mais tu dois utiliser Try...Catch si tu veux éviter d'autres erreurs)

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Commencer par utiliser des requêtes paramétrées serait déjà un bon début plutôt que la requête générée à la main qui va planter au premier apostrophe !

Discussions similaires

  1. division dans une requete sql sous asp.net
    Par nlm_look dans le forum ASP.NET
    Réponses: 3
    Dernier message: 28/07/2010, 11h05
  2. manipuler une table access sous Vb.net avec commande SQL
    Par vb.net.2008 dans le forum VB.NET
    Réponses: 5
    Dernier message: 29/01/2009, 09h44
  3. Executer une procedure developpée sous VB.net Sous SQl server
    Par guandal dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/01/2007, 12h18
  4. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31
  5. Optimiser une Requetes SQL sous ASP
    Par NeHuS dans le forum ASP
    Réponses: 8
    Dernier message: 18/04/2005, 16h26

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