Bonjour,
Alors j'ai un projet c# et je bloque sur un certain point, c'est surement une question d'algorithmie mais je ne parviens pas a trouver le bon truc.
Le but est d'afficher un élève aléatoirement à partir d'un requête sql en fonction du groupe coché dans une group box.
j'ai un fichier dataAccess qui gère la connexion:
Et maintenant le problème c'est la requête :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DataAccess dataA = new DataAccess(); dataA.openConnection();
Comme vous le voyez il y a des "or" partout sauf dans le premier, du coup je ne peux pas décocher cette case sinon ça génère une erreur.
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
18
19
20
21
22
23
24
25
26 String sql = "select top(1) e.ideleve,e.idgroupe,e.nomeleve,e.prenomeleve,g.libellegroupe " + "From eleve e " + "join groupe g on e.idgroupe = g.idgroupe " + "where "; // HELP HERE !!! if (cbxGroupeA.Checked == true) { sql += "g.libellegroupe='" +cbxGroupeA.Text + "'"; } if (cbxGroupeB.Checked == true) { sql += " or g.libellegroupe='" + cbxGroupeB.Text + "'"; } if (cbxGroupeC.Checked == true) { sql += " or g.libellegroupe='" + cbxGroupeC.Text + "'"; } if (cbxGroupeD.Checked == true) { sql += " or g.libellegroupe='" + cbxGroupeD.Text + "'"; } sql += " order by newid()"; //permet de récuperer la première ligne du résultat de la requête, c'est ordonné aléatoirement
ma question est comment je pourrais faire en sorte de ne mettre un 'or' que si un élément à déjà auparavant été sélectionné dans ma group box ?
et pour finir le traitement pas très compliqué :
J'ai essayé avec une fausse condition "where 1=1" puis j'enchaine mais elle ne fonctionne pas avec un or.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 SqlDataReader dataT = dataA.getData(sql); while(dataT.Read()) { nom = dataT["nomeleve"].ToString(); prenom = dataT["prenomeleve"].ToString(); groupe = dataT["libellegroupe"].ToString(); } dataT.Close(); dataA.closeConnection();
Je pense qu'il faut faire une boucle avec un for mais je ne vois pas comment faire....
Help please !
Partager