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 :

Calcul moyenne 3 notes


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut Calcul moyenne 3 notes
    j'ai une table eleve contenant nom prenom note1 note2 note 3
    dans un formulaire dans vb.net j’écris le nom prénom de l’élevé dans deux zone de teste dédié a ça
    j'appuie sur bonton calcul
    les trois notes de cette élevés s'affichent dans des zones texte(requête sql)
    dans le même bouton je calcul la moyenne de ces 3 notes
    mais ces notes qui correspondent à cette eleves leurs affectent 0 alors que dans la base ils le sont pas
    ils donnent une moyenne de 0 quelque soit les notes
    les notes sont de types données float, j'utilse sql server 2008 avec vb.net
    je sais pas d’où peut venir le problème.
    merci pour l'aide

  2. #2
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Bonjour

    dans le même bouton je calcul la moyenne de ces 3 notes
    montre ton code

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    bonsoir
    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
    17
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            cn.Open()
            If cn.State = ConnectionState.Open Then
                cm1.CommandText = "select * from eleve where nom = '" & txtnom.Text & "' AND prenom = '" & txtprenom.Text & "' "
                cm1.Connection = cn
                dr = cm1.ExecuteReader
                If dr.HasRows Then
                    dr.Read()
                    txnote1.Text = dr(2)
                    txnote2.Text = dr(3)
                    txnote3.Text = dr(4)
                End If
            End If
            lblmoy.Text = (Val(txnote1.Text) + Val(txnote1.Text) + Val(txnote1.Text)) / 3
            dr.Close()
     
        End Sub

  4. #4
    Membre éprouvé

    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Israël

    Informations forums :
    Inscription : Mars 2012
    Messages : 691
    Points : 929
    Points
    929
    Par défaut
    Déja
    1 Active option explicit on et option strict on (projet ->proprieté de ton projet > onglet compiler)
    cela forcera de faire les conversions correctement

    Si tu codes en vb.net alors évite l'utilisation des fonctions vb6
    ex on écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Convert.ToInt32(txnote1.Text)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (Val(txnote1.Text) + Val(txnote1.Text) + Val(txnote1.Text)) / 3
    pourquoi 3 fois la même note

    ce qui donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim average As Double
            average = (Convert.ToInt32(txnote1.Text) + Convert.ToInt32(txnote2.Text)  + Convert.ToInt32(txnote3.Text))/3
            lblmoy.Text = average.tostring
    il est recommandé d'utiliser des requetes paramétrées

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    j'ai cette erreur
    Nom : IrjBQQ.jpg
Affichages : 1314
Taille : 63,3 Ko

  6. #6
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Pas bonjour non plus,
    et si tu essayes comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim average As Double
            MessageBox.Show(txnote1.Text & "-" & txnote2.Text & "-" & txnote3.Text)
            average = (Convert.ToInt32(txnote1.Text) + Convert.ToInt32(txnote2.Text) + Convert.ToInt32(txnote3.Text)) / 3
            lblmoy.Text = average.ToString
    Qu'as-tu comme premier message?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    shayw merci pour l'aide
    je devais utilisé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim average As Double
            average = (Convert.ToDecimal(txnote1.Text) + Convert.ToDecimal(txnote2.Text)  + Convert.ToDecimal(txnote3.Text))/3
            lblmoy.Text = average.tostring

  8. #8
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Oui... mais pourquoi convertir un double en décimal?...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            txnote1.text = txnote1.text.Replace(".", ",")
            txnote2.text = txnote2.text.Replace(".", ",")
            txnote3.text = txnote3.text.Replace(".", ",")
            Dim average As Double
            average = (Convert.ToDouble(txnote1) + Convert.ToDouble(txnote2) + Convert.ToDouble(txnote3)) / 3
            lblmoy.Text = average.ToString
    A+

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    les note ont de cette forme
    8
    13.5
    et dans la base de donnée les sont pris pour des chaines de caractères même si je les ai déclaré float

  10. #10
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Eh oui... 13.5...
    8
    13.5
    et dans la base de donnée les sont pris pour des chaines de caractères même si je les ai déclaré float
    Alors soit tu les laisses en string soit en décimal mais ne mélange pas le tout.

    A propos de ta valeur 13.5 (par exemple) a ton avis pourquoi je t'ai mis ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     txnote1.text = txnote1.text.Replace(".", ",")
     txnote2.text = txnote2.text.Replace(".", ",")
     txnote3.text = txnote3.text.Replace(".", ",")

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2005
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 53
    Points : 34
    Points
    34
    Par défaut
    je pense que tu veux dire que 13.5 chaine caractère et 13,5 un nombre

  12. #12
    Invité
    Invité(e)
    Par défaut
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    cm1.CommandText = "select * from eleve where nom = '" & txtnom.Text & "' AND prenom = '" & txtprenom.Text & "' "

    Un conseil : dans une requête SELECT, évite au maximum de mettre un *, c'est très dangereux, met à la place les noms des colonnes qui t'intéresses.
    Par ailleurs, je ne comprends pas pourquoi tu veux calculer la moyenne dans du code en VB, pourquoi ne le ferais tu pas justement dans ta requête SELECT?
    Si dans ta table, les notes sont au format string, tu as la possibilité de faire une conversion en double, sql sait le gérer.

  13. #13
    Membre averti
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2013
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juillet 2013
    Messages : 235
    Points : 359
    Points
    359
    Par défaut
    Re:
    On s'en fout, de toute façon on va le convertir en double
    que la chaîne soit "13.5" ou "13,5" on lui dit de remplacer tous les "." par des "," sinon il y a erreur à la conversion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txnote1.text = txnote1.text.Replace(".", ",")
    s'il est "13,5" rien ne se passe
    s'il est "13.5" il devient "13,5" et comme ça la conversion peut se faire

  14. #14
    Invité
    Invité(e)
    Par défaut
    Je ne me suis pas fait comprendre : au lieu de faire les calculs en VB, il est également possible de les faire en SQL. Ainsi, en VB, on ne fait que récupérer les valeurs ainsi retournées.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select *,(select Avg([Note]) from eleve where nom = '" & txtnom.Text & "' AND prenom = '" & txtprenom.Text & "') as Moye from eleve where nom = '" & txtnom.Text & "' AND prenom = '" & txtprenom.Text & "' "

Discussions similaires

  1. Calcul moyenne des notes en perl
    Par Contreras dans le forum Langage
    Réponses: 1
    Dernier message: 22/11/2011, 14h00
  2. un programme de calcul d'une note moyenne mais
    Par Dr walid dans le forum Débuter
    Réponses: 2
    Dernier message: 09/10/2009, 21h28
  3. Calcul moyenne par requête
    Par mulanzia2003 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/11/2007, 08h23
  4. [CR XI] Formule calculer moyenne
    Par campia dans le forum Formules
    Réponses: 9
    Dernier message: 05/07/2007, 12h13
  5. Réponses: 35
    Dernier message: 10/05/2006, 01h11

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