manu | #1 Posté le 9/10/2011 à 16:48:01 |
---|
Avec Gambas ca roule ! | Bonjour,
Je veux remplir un treeview a partir d'une base de données avec une boucle for each. Cela semble fonctionner sauf qu'il me manque des enregistrements. Du coup, je me demande si il y a pas untruc enorme que je ne vois pas.
Dans la base, j'ai des aliments classé par type et pour lequel j'ai un ou plusieurs détails supplémentaires
Voila le résultat :
Dans l'image, vous pouvez voir que l'indice de l'aliment selectionné est 3 ce qui veux dire que les 2 premiers ne sont pas affiché. Je ne comprend pas pourquoi :
Voici mon code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| hRequete = DB.Exec("SELECT TA.TypeAliment as Type, A.Aliment as Nom, DA.DetailAliment as Detail, DA.id FROM DetailAliment DA INNER JOIN Aliments A, TypeAliment TA ON DA.idAliment=A.idAliment and DA.idTypeAliment=TA.idTypeAliment") IF hRequete.Available = TRUE THEN FOR EACH hRequete IF sType <> hRequete!Type THEN 'si le dernier type est différent de celui de l'enregistrement en cours sType = hRequete!Type 'alors c'est un nouveau type INC i TreeView1.Add("T" & i, sType) ' et tu l’insère dans le treeview1 ELSE IF sAliment <> hRequete!Nom THEN sAliment = hRequete!Nom INC iNom TreeView1.Add("A" & iNom, sAliment,, "T" & i) ELSE ' sDetail = hRequete!Detail TreeView1.Add(hRequete!id, hRequete!Detail,, "A" & iNom) ENDIF ENDIF NEXT ENDIF
|
Avez vous une idée ?
Merci d'avance
Jeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) |
gambix | #2 Posté le 9/10/2011 à 17:29:34 |
---|
Faire simple ! | trouvé !!
ce n'est pas parce que l'on change de nom ou de type qu'il ne faut pas enregistrer l'entrée courante !!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| hRequete = DB.Exec("SELECT TA.TypeAliment as Type, A.Aliment as Nom, DA.DetailAliment as Detail, DA.id FROM DetailAliment DA INNER JOIN Aliments A, TypeAliment TA ON DA.idAliment=A.idAliment and DA.idTypeAliment=TA.idTypeAliment") IF hRequete.Available = TRUE THEN FOR EACH hRequete 'Si type change on ajoute l'entrée et on incrémente l'index IF sType <> hRequete!Type THEN 'si le dernier type est différent de celui de l'enregistrement en cours sType = hRequete!Type 'alors c'est un nouveau type INC i TreeView1.Add("T" & i, sType) ' et tu l’insère dans le treeview1 ENDIF
'si le nom d'aliment change on créé l'entrée dans tous les cas et on incremente l'index IF sAliment <> hRequete!Nom THEN sAliment = hRequete!Nom INC iNom TreeView1.Add("A" & iNom, sAliment,, "T" & i) ENDIF 'on ajoute l'entrée dans tous les cas TreeView1.Add(hRequete!id, hRequete!Detail,, "A" & iNom)
NEXT ENDIF
|
Moins de texte dans une signature c'est agrandir son espace. |
manu | #3 Posté le 9/10/2011 à 18:53:59 |
---|
Avec Gambas ca roule ! | ok super... Je savais bien que c'etait pas grand chose mais bon je trouvais pas (et je suis pas sûr que j'aurais trouvé ça seul ) .
Merci encoreJeanne d'arc, elle a frit, elle a tout compris ! Config : Manjaro linux (excellent !) XFCE 4.1 (simple et efficace) Gambas 3 dans les dépots (confort total) |