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

Windows Forms Discussion :

Rafraîchir résultat TextBox via une ComboBox


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 9
    Par défaut Rafraîchir résultat TextBox via une ComboBox
    Bonjour,

    Pour vous expliquez mon petit problème, je souhaite faire afficher le résultat d'une requête SQL SUM dans ma textbox (ça fonctionne) des éléments de ma table (à savoir la SUM des prix). Cependant je souhaite pouvoir filtrer ces prix par années via une combobox qui est déjà présente elle aussi mais qui ne peut que pour l'instant filtrer le SELECT dans mon datagridview.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                string selectQuery = "SELECT id_mat,annee_materiel FROM materiel";
                comboannee.DataSource = getData(selectQuery);
                comboannee.DisplayMember = "annee_materiel";
                comboannee.ValueMember = "id_mat";
                comboannee_SelectedIndexChanged(null, null);
    - Affichage des différentes années dans ma combobox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                var query = "SELECT SUM(prix_materiel) FROM materiel GROUP BY annee_materiel";
                using (var cmd = new MySqlCommand(query, connection))
                {
                    connection.Open();
                    txt_prix.Text = cmd.ExecuteScalar().ToString();
     
                }
    - Affichage du résultat de la SUM dans ma textbox.

    Sur ma form : (désolé petit problème avec les images que je n'arrive pas à modifier)
    Images attachées Images attachées     

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Hello,
    2 solutions soit tu rejoues la requête en passant en paramètre l'année, soit tu stock le résultat de ta requête initiale dans une liste et ensuite tu appliques le filtre sur cette liste que tu affectes comme datasource à ton grid.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 9
    Par défaut
    Citation Envoyé par youtpout978 Voir le message
    Hello,
    2 solutions soit tu rejoues la requête en passant en paramètre l'année, soit tu stock le résultat de ta requête initiale dans une liste et ensuite tu appliques le filtre sur cette liste que tu affectes comme datasource à ton grid.
    Salut, merci pour ton aide mais je ne vois pas exactement ce que tu veux dire par rejouer ma requête en passant en paramètre l'année.

    C'est bien ici que tu me dis de le faire ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                var query = "SELECT SUM(prix_materiel) FROM materiel GROUP BY annee_materiel";
                using (var cmd = new MySqlCommand(query, connection))
                {
                    connection.Open();
                    txt_prix.Text = cmd.ExecuteScalar().ToString();
     
                }
    Moi j'avais pensé à faire une condition quand je sélectionne une nouvelle année dans ma combobox, le datagrid afficherais le résultat pour l'année choisis via la requête. Je vais quand même essayer !

    Désolé pour les demandes bêtes surement mais c'est la première fois que je bloque à ce point et que je ne trouve pas grand chose sur le net.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
       var query = "SELECT SUM(prix_materiel) FROM materiel GROUP BY annee_materiel where year=@year";
    string val="2016";
                using (var cmd = new MySqlCommand(query, connection))
                {
    cmd.Parameters.AddWithValue("@year", val);
                    connection.Open();
                    txt_prix.Text = cmd.ExecuteScalar().ToString();
     
                }

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2017
    Messages : 9
    Par défaut
    Merci pour ton aide,

    Tous d'abord j'ai cette Exception :

    MySql.Data.MySqlClient.MySqlException*: 'Erreur de syntaxe près de 'where year='2016'' à la ligne 1'
    De plus je souhaite pouvoir sélectionner n'importe qu'elle année faisant parti de ma base de donnée et je ne vois pas comment faire.

    Sinon j'ai fais quelques recherches par rapport a ta deuxième solution et trouver ça (bien-sur je dois adapté avec mon cas mais est-ce que ça se rapproche de ce que tu m'avais dis ?) :

    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
    List<Stock> dataSource = new List<Stock>(); // set list of object to an variable not to query db again and again, just use this all the time
    private void Form1_Load(object sender, EventArgs e) {
          dataSource = GetStocks(); 
          comboBox1.DisplayMember = "Name"; // set display member
          comboBox1.ValueMember = "Id"; // value member as Id to use at selectedIndex changed
          comboBox1.DataSource = dataSource;
    }
    public List<Stock> GetStocks() { // just creating on my own list, you won't change this
         return new List<Stock>() { new Stock(1,"test1",13) , new Stock(2, "test2", 17), new Stock(3, "test3", 113) };
    }
     
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
         // query your List variable to find the stock by selected Item's Id, get first one and take Price property
          decimal value = dataSource.Where(x => x.Id == (int)comboBox1.SelectedValue).FirstOrDefault().Price; 
          textBox1.Text = value.ToString(); // set value to textbox
    }
    Merci d'avance !

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    J'ai mis l'exemple à titre informatif il faut voir quels sont les champs que tu as exactement en BDD (dans ton cas c'est pas year mais annee_materiel).

    Si tu as peu d'élément en base de donnée tu peux tout remonter en une fois, et appliquer des filtres dessus, sinon il vaut mieux lancer des requêtes à chaque fois, sinon tu peux utiliser un ORM style entity framework.

    Je ne sais pas à quel point tu maitrises le SQL, Linq et le C#.

    Dois-tu afficher tout ce que tu as en stock ou tu es interessé juste par la somme par année.

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

Discussions similaires

  1. Rechercher l'adresse d'une cellule remplie via une combobox
    Par thomanneca dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/02/2014, 19h09
  2. Rafraichir les valeurs d'une combobox en l'ouvrant
    Par MartinezGarcia dans le forum jQuery
    Réponses: 1
    Dernier message: 23/08/2011, 17h07
  3. [AC-2003] Remplir un textbox via une requete
    Par tsuki95 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/11/2010, 12h56
  4. rafraichir les donnée d'une combobox
    Par qbihlmaier dans le forum IHM
    Réponses: 1
    Dernier message: 06/12/2005, 19h07
  5. Ouvrir une form via une ComboBox
    Par Conficius dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/11/2005, 16h11

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