Gambas France BETA


Pas de compte ? Incription

remplissage treeview

Ce sujet est résolu.

1
AuteurMessages
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 encore
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)
1