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 :

récupérer la valeur output dans une zone de texte


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut récupérer la valeur output dans une zone de texte
    Bonjour tout le monde, je developpe sur vb2005 et j'ai créé une procédure très simple pour calculer un total c'est réussi elle me renvoie le total et elle reçoit comme paramètre deux un champ de la base de type intput et l'autre valeur total coutput ce que je veux c'est récupérer la valeur du total dans un zone de texte en un clic d'un bouton mon code est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    con.Open()
     
    cmd = New SqlCommand("exec calculFrais @n_rapport,@total output")
    cmd.Parameters.Add("@n_rapport", SqlDbType.VarChar, 50)
    cmd.Parameters.Add("@total", SqlDbType.Int, 4)
    cmd.Connection = con
    cmd.Parameters("@n_rapport").Direction = ParameterDirection.Input
    cmd.Parameters("@total").Direction = ParameterDirection.Output
    cmd.Parameters("@n_rapport").Value = Me.ComboBox1.SelectedValue
    cmd.ExecuteNonQuery()
     
    Me.TextBox2.Text = cmd.Parameters("@total").Value
    con.Close()
    mais une fois que je clique sur mon bouton je reçois ce message d'erreur
    La conversion du type 'DBNull' en type 'String' n'est pas valide
    L'erreur concerne cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TextBox2.Text = cmd.Parameters("@total").Value

    merci d'avance!!et si vous pouvez trouvez moi une solution s'il vous plait!

  2. #2
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Vu le message d'erreur, ca signifie que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.Parameters("@total").Value
    renvoie DBNull.Value (c'est à dire le null SQL) et tu ne peux donc pas affecter ceci à une variable de type String.

    Vérifie ta procédure stockée.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    ma procédure est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create proc calculFrais(@n_rapport varchar(50),@total int output)
    as
    select sum(prix)as TotalFrais 
    from fraisDeplacement,rapport,ligneRapport,clients
    where rapport.n_rapport=ligneRapport.n_rapport 
    and ligneRapport.n_ligne_rapport=fraisDeplacement.n_ligne_rapport 
    and ligneRapport.n_ligne_rapport=clients.n_ligne_rapport 
    and rapport.n_rapport=@n_rapport
     
    declare @total int
    exec calculFrais '1000005',@total output
    print @total
    mais j'ai pas compris ce dbnull ,le type de la variable de sortie est int donc si j'affecte sa valeur à la zone de texte qu'est de type string au moins faut qu'il accepte la conversion de cette valeur au type string é pas me renvoyer la meme erreur..
    si tu peux me dire comment récupérer la valeur dans la zone de texte sachant que ma valeur est de type int et la zone de type string voilà..
    mercii

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Avant d'aller plus loin, et si tu as un débuger, exécute ton code en pas à pas pour vérifier à quel moment l'exception est levée et si c'est effectivement sur la récupération du résultat de l'exécution de la procédure stockée, vérifie ce qu'elle retourne.

    Si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmd.Parameters("@total").Value
    te renvoie DBNull.Value, il va falloir regarder du côté de la procédure stockée et de son appel. N'en ayant jamais appelé par le code je ne suis pas le mieux placé, mais on verra ce qu'on peut faire.

    Ensuite, n'assigne pas directement le résultat de ta procédure stockée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Object o = cmd.Parameters("@total").Value
    dim result As String = String.Empty
    If (o <> System.DBNull.Value) result = ...
    Me.TextBox2.Text = result
    Je suis une quiche en syntaxe VB, mais ca doit être un truc comme ca.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    toujours le emme probleme,j'ai essayé ton code après l'avoir converti en language vb mais en vain

    si vous avez un tutoriel sinon j'espère que vous me passez le coup de main surtout les gens qui developpe sous vb2005..
    merci!

  6. #6
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Ferme ta connexion avant de lire la valeur retour, j'ai regardé plusieurs exemples et à priori il faut avoir fermé la connexion pour pouvoir lire le retour.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    Me.TextBox2.Text = cmd.Parameters("@total").Value
    con.Close()
    si tu parles de la connexion je vois que je l'ai fermé
    "con.close" sinon c'est autre part que tu veux que je ferme ma connexion ..c ça?
    où précisement?

  8. #8
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Citation Envoyé par islamune9
    ... sinon c'est autre part que tu veux que je ferme ma connexion ..c ça? où précisement?
    Oui, essaye de la fermer à un autre moment et pour le où, je pensais avoir été clair
    Ferme ta connexion avant de lire la valeur retour
    Donc, essaye comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    cmd.ExecuteNonQuery()
    con.Close() 
    Me.TextBox2.Text = cmd.Parameters("@total").Value.ToString()
    Je ne garanti rien, c'est juste que sur tous les exemples que j'ai regardé c'est ainsi que c'est codé, et c'est peut être nécessaire.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    oui excuse moi ,j'ai pas fait attention voilà...
    et pour la femrture c'est fait de la meme manière tpujours le meme message d'erreur

  10. #10
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Désolé alors. On attendra que quelqu'un qui se sert de procédures stockées puisse t'aider, pas moi en l'occurence

  11. #11
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    je vous remercie énormément
    et j'espère que quelqu'un me passe le coup demain .
    merci encore une fois

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 173
    Points : 25 113
    Points
    25 113
    Par défaut
    un sujet similaire a été résolu il y a quelques jours me semble t il

  13. #13
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    beh svp dites moi sur quel rubrique je peux trouver la réponse puisqu'il vous emble que c'est déjà posé comme question sur le forum merci !!

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 173
    Points : 25 113
    Points
    25 113
    Par défaut
    quand meme pas dur, page 2 de ce forum

    http://www.developpez.net/forums/sho...d.php?t=329746

    le titre est [Résolu] [vb.NET] Récupérer la valeur return d'une procédure stockée

  15. #15
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    Beh j'ai jeté un coup d'oeil sur la page que tu m'as précisé mais si tu as bien lu mon probleme depuis le début tu remarqueras que c'est pas ce que je cherche le probleme résolu dans l'autre rubrique moi je l'ai dépassé ce que je cherche c'est récupérer la valeur dans une zone de texte

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 173
    Points : 25 113
    Points
    25 113
    Par défaut
    je ne comprends pas ton probleme
    j'ai cru que c'était de récuperer un parametre output dans une requete sql
    qu'appelles tu récupérer une valeur d'une zone de texte ??
    un textbox ?

    quelle est l'erreur exactement ?
    as tu essayé de rajouter .tostring

  17. #17
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    beh voilà regarde mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     con.Open()
    
                cmd = New SqlCommand("exec calculFrais @n_rapport,@total output")
                cmd.Parameters.Add("@n_rapport", SqlDbType.VarChar, 50)
                cmd.Parameters.Add("@total", SqlDbType.Int, 4)
                cmd.Connection = con
                cmd.Parameters("@n_rapport").Direction = ParameterDirection.Input
                cmd.Parameters("@total").Direction = ParameterDirection.Output
                cmd.Parameters("@n_rapport").Value = Me.ComboBox1.SelectedValue
                cmd.ExecuteNonQuery()
    
                con.Close()
                Me.TextBox2.Text = cmd.Parameters("@total").Value
    dans la dernière ligne de mon code comme tu vois je récupérer la valeur output envoyé par ma procédure dans la zone de text textbox2.text !
    j'espère que c'est claire
    merci!

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 173
    Points : 25 113
    Points
    25 113
    Par défaut
    t'as essayé .value.tostring ?

  19. #19
    Nouveau membre du Club
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    Points : 29
    Points
    29
    Par défaut
    oui et rien ne se passe passe cette fois ci y a plus le message d'erreur mais la zone de texte récupère rien elle est vide

Discussions similaires

  1. Réponses: 14
    Dernier message: 10/10/2013, 06h39
  2. [AC-2003] Valeur affichée dans une zone de texte
    Par srede dans le forum IHM
    Réponses: 2
    Dernier message: 09/11/2010, 08h22
  3. Réponses: 13
    Dernier message: 26/11/2009, 16h28
  4. Réponses: 2
    Dernier message: 23/04/2008, 17h49
  5. Valeur numérique dans une zone de texte
    Par KEROZEN dans le forum IHM
    Réponses: 3
    Dernier message: 30/05/2006, 08h43

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