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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    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
    Membre expérimenté
    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 : 47
    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
    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
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    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
    Membre expérimenté
    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 : 47
    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
    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
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 57
    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
    Membre expérimenté
    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 : 47
    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
    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.

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