CheckedListBox & Requête SQL [Résolu]

Messages postés
29
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
14 août 2014
- - Dernière réponse : Whismeril
Messages postés
13609
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 août 2019
- 28 mai 2013 à 12:15
Bonsoir à tous,

Voici mon problème :

J'ai une checkedListBox contenu des cours, je récupère les champs cochés dans celle ci et je les place dans une liste.

List<string> listCours = new List<string>();

            for (int i = 0; i <= (checkedListBoxCours.CheckedItems.Count - 1); i++)
            {
                listCours.Add(checkedListBoxCours.CheckedItems[i].ToString());
            }

            


En fonction des cours récupérés je voudrais calculer la somme de ses cours pour obtenir un prix total
via la méthode SUM en sql.

Seulement je ne sais pas comment passé ma liste de cours récupérés à une requête sql...

Une idée?

Merci d'avance pour votre réponse.
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
13609
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 août 2019
295
3
Merci
La méthode que je t'ai proposée fonctionne quelque soit le nombre d'items selectionnés.

//Lecture de la base de donnée
List<MonCours> tousLesCours= new List<MonCours>();
//Ici le code pour se connecter lire les données et remplir la liste, je ne fait pas de db je te laisse faire

//une fois la liste remplie
checkedListBoxCours.datasource = tousLesCours;
//maintenant le checkedListBoxCours affiche la liste complléte des cours


//dans l'évèement click par exemple
int total= checkedListBoxCours .CheckedItems.Cast<MonCours>().Sum(c=> c.Prix)


Whismeril

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 122 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Whismeril
Messages postés
13609
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 août 2019
295
0
Merci
Bonjour,

à ta place au lieu d'avoir une liste de string, je ferais une liste d'une classe ayant le nom du cours et le prix en tant que propriétés

class MonCours
{
    public string Nom {get; set;}

    public int Prix {get; set;}

    public override string ToString()
    {
       return string.Format("Ici j'affiche le nom:{0}", Nom);
    }

....
}


Ma checkedlisbox contiendrait la liste totale des cours en affichant le nom (avec la propriété DisplayMember ou en "overidant" le ToString de MonCours).

Quand tu crées la liste de cours cochés:
List<MonCours> listCours = new List<MonCours>();

            for (int i = 0; i < checkedListBoxCours.CheckedItems.Count; i++)//< est plus simple à utiliser que <=,et d'ailleurs dans ce cas je préfère foreach
            {
                listCours.Add((MonCours)checkedListBoxCours.CheckedItems[i]);
            }


Ensuite il ne te reste qu'à faire la somme du prix grâce àLinq
int total = listCours.Sum(c=> c.Prix);//pas besoin de se torturer à intégrer du sql


J'ai tapé les codes de tête, il y a peut être quelques petites erreurs.

Sinon tu peux même faire tout ça en une seule ligne:
int mesTests = checkedListBox1.CheckedItems.Cast<ClassTest>().Sum(c=> c.Age);//le cast transforme la collection de CheckedItems en un Ienumerable de ClassTest, auquel je peux appliquer Sum

Whismeril
Commenter la réponse de Whismeril
Messages postés
29
Date d'inscription
samedi 31 janvier 2009
Statut
Membre
Dernière intervention
14 août 2014
0
Merci
Merci pour ta réponse.

J'ai effectué un test en sélectionnant 3 cours.

List<string> listCours = new List<string>();
 
            for (int i = 0; i <= (checkedListBoxCours.CheckedItems.Count - 1); i++)
            {
                listCours.Add(checkedListBoxCours.CheckedItems[i].ToString());
            }
 
            string un = listCours[0];
            string deux = listCours[1];
            string trois = listCours[2];
 
            DBConnect db = new DBConnect();
 
            textBoxCout.Text = db.CountFormations(un, deux, trois);


Je passe mes 3 cours à ma requête sql et je place le résultat dans une textbox. Ça fonctionne parfaitement.

Il me reste à trouver comment faire pour envoyer les cours sélectionné, pas uniquement les trois comme dans mon test.
Commenter la réponse de Dedel209