PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → treeview - programmation
treeview - programmation
Débuté par cedric, 05 avr. 2006 11:45 - 11 réponses
Posté le 05 avril 2006 - 11:45
bonjour a tous!

je cherche a realiser un treeview pour mon prog mas je me heurte a certains certains probleme s de programmation : je souhaite afficher pour chaque client, tous ces produits et pour chaque produit, son ensemble de sous produits.
actuellement, j arrive a afficher tous les clients avec leurs produits, mais je n ai qu'un sous produit pour un seul produit par client

voici mon code:

//ON RECHERCHE LA REF ET LE LIBELLE D UN CLIENT
REQ est une chaîne = [
SELECT T_Client.Ref_T_Client, T_Client.Libelle_T_Client FROM T_Client
]
SQLExec(REQ, "client")
Var_libclient est un tableau fixe de 20 chaînes
Var_refcli est un tableau fixe de 20 entiers
i est un entier = 0
nbclient est un entier = 0

TANTQUE SQLAvance("client") = 0
i++
Var_refcli[i] = SQLLitCol("client",1)
Var_libclient[i] = SQLLitCol("client",2)
nbclient++
FIN

POUR i = 1 A nbclient
Var_libproduit est un tableau fixe de 50 chaînes
Var_refproduit est un tableau fixe de 50 entiers
j est un entier = 0
//ON RECHERCHE LA REF ET LE LIBELLE DES PRODUITS D UN CLIENT
REQ1 est une chaîne = [
SELECT T_Produit.Ref_T_Produit, T_Produit.Libelle_T_Produit FROM T_Produit WHERE T_Produit.Ref_T_Client ='%1'
]
REQ1 = ChaîneConstruit(REQ1, Var_refcli[i])
SQLExec(REQ1, "produit")
nbproduit est un entier = 0
TANTQUE SQLAvance("produit") = 0
j++
Var_refproduit[j] = SQLLitCol("produit",1)
Var_libproduit[j] = SQLLitCol("produit",2)
Res est un booléen
STANDARD est une chaîne
Res = ArbreAjoute (STANDARD, "TOUS" + TAB + Var_libclient[i] + TAB + Var_libproduit[j], aDéfaut , aDéfaut)
//ON RECHERCHE LES REF D UN ENSEMBLE D UN PRODUIT
REQ2 est une chaîne = [
SELECT T_Couple.Ref_T_Ensemble FROM T_Couple WHERE T_Couple.Ref_T_Produit ='%1'
]
REQ2 = ChaîneConstruit(REQ2, Var_refproduit[j])
SQLExec(REQ2, "refens")
k est un entier = 0
Var_refensemble est un tableau fixe de 50 entiers
nblib est un entier = 0
TANTQUE SQLAvance("refens") = 0
k++
Var_refensemble[k] = SQLLitCol("refens",1)
//ON RECHERCHE LE LIBELLE D UN ENSEMBLE
REQ3 est une chaîne = [
SELECT T_Ensemble.Libelle_T_Ensemble FROM T_Ensemble WHERE T_Ensemble.Ref_T_Ensemble ='%1'
]
REQ3 = ChaîneConstruit(REQ3, Var_refensemble[k])
SQLExec(REQ3, "libens")
p est un entier = 0
Var_libensemble est un tableau fixe de 50 chaînes
TANTQUE SQLAvance("libens") = 0
p++
Var_libensemble[p] = SQLLitCol("libens",1)
nblib++
//Construction de l'arbre
Res1 est un booléen
STANDARD1 est une chaîne
Res1 = ArbreAjoute (STANDARD1, "TOUS" + TAB + Var_libclient[i] + TAB + Var_libproduit[j] + TAB + Var_libensemble[p], aDéfaut , aDéfaut)
FIN
FIN
nbproduit++
FIN
FIN

merci d avance.
Posté le 05 avril 2006 - 12:19
salut

as-tu vérifié si ta requete sur les sous-produits renvoie bien plusieurs lignes ?
Posté le 05 avril 2006 - 12:34
Bonjour,

Déjà, il faut que ton treeView accepte les doublon, donc

Res1 = ArbreAjoute (STANDARD1, "TOUS" + TAB + Var_libclient[i] + TAB + Var_libproduit[j] + TAB + Var_libensemble[p], aDéfaut , aDéfaut,, ,aAccepteDoublon + aDernier))

De plus, si tu veux en cliquant sur une feuille, un noeud, afficher le résultat dans une table comme pour une fenêtre explorateur de fichier Window, il est plus sage d'ajouter un ID

Par exemple :
IDC = "A" + numéro d'enregistrement du fichier client pour le client.
Res = ArbreAjoute (STANDARD, "TOUS" + TAB + Var_libclient[i], aDéfaut , aDéfaut, ID)

IDL = "B" + numéro d'enregistrement du fichier lib_produit
Res = ArbreAjoute (STANDARD, "TOUS" + TAB + Var_libclient[i] + ArbreID(IDC) + TAB + Var_libproduit[j], aDéfaut , aDéfaut, IDL, aAccepteDoublon + aDernier))

IDS = "C" + numéro d'enregistrement du fichier libensemble
ArbreAjoute (STANDARD1, "TOUS" + TAB + Var_libclient[i] + arbreID( IDC) + TAB + Var_libproduit[j] + arbreID( IDL)+ TAB + Var_libensemble[p], aDéfaut , aDéfaut, IDS, aAccepteDoublon + aDernier))


Cordialement,

C.AUBRY
Posté le 05 avril 2006 - 12:34
oui elle me renvoie bien plusieurs sous produits
Posté le 05 avril 2006 - 13:09
j'ai fais comme tu m a dit C.AUBRY mais j'ai toujours le meme soucis. lol
je pense que ca vient de mes boucles qui ne " bouclent pas"
Posté le 05 avril 2006 - 13:47
Re bonjour,

A mon avis, un SQLPremier avant TANTQUE SQLAvance() = 0 devrait faire l'affaire.

A+

C.AUBRY
Posté le 05 avril 2006 - 15:31
a mon avis surtout pas
Posté le 05 avril 2006 - 15:57
pourquoi?
Posté le 06 avril 2006 - 10:23
dixit l'aide de windev :

"Lors du premier appel de la fonction SQLAvance (également nommée SQLFetch) , l'enregistrement en cours sera le premier des enregistrements sélectionnés par la requête. "
Posté le 14 juin 2017 - 15:04
Bonjour,

Je possède Windev 19 et je travaille actuellement sur un TreeView où j'ai besoin d'y gérer des doublons.
Je cas se gère normalement avec la fonction ArbreID que l'on rajoute dans les fonctions tel que ArbreAjoute, mais voilà, cela ne fonctionne pas et les éléments et feuilles s'ajoute sur le premier élément du même nom trouvé même en utilisisant l'exemple fourni dans l'aide :

RésultatArbre est un booléen

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" + TAB + "Feuille", aDéfaut, aDéfaut, "Id feuille", aAccepteDoublon, "Id feuille")

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" + TAB + "Feuille", aDéfaut, aDéfaut, "Id feuille 2", aAccepteDoublon, "Id feuille 2")

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" + TAB + "Feuille" + ArbreID("Id Feuille 2") + TAB + "Mon Elément", aDéfaut, aDéfaut, "Mon Elément 1")





"Mon Elémént" s'ajoute à "Feuille" d'ID "Id Feuille" et non à "Feuille" d'ID "Id Feuille 2" comme c'est codé.

Incompréhensible !!!

Un peu d'aide, merci d'avance
Posté le 14 juin 2017 - 15:04
Bonjour,

Je possède Windev 19 et je travaille actuellement sur un TreeView où j'ai besoin d'y gérer des doublons.
Je cas se gère normalement avec la fonction ArbreID que l'on rajoute dans les fonctions tel que ArbreAjoute, mais voilà, cela ne fonctionne pas et les éléments et feuilles s'ajoute sur le premier élément du même nom trouvé même en utilisisant l'exemple fourni dans l'aide :

RésultatArbre est un booléen

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" + TAB + "Feuille", aDéfaut, aDéfaut, "Id feuille", aAccepteDoublon, "Id feuille")

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" + TAB + "Feuille", aDéfaut, aDéfaut, "Id feuille 2", aAccepteDoublon, "Id feuille 2")

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" + TAB + "Feuille" + ArbreID("Id Feuille 2") + TAB + "Mon Elément", aDéfaut, aDéfaut, "Mon Elément 1")





"Mon Elémént" s'ajoute à "Feuille" d'ID "Id Feuille" et non à "Feuille" d'ID "Id Feuille 2" comme c'est codé.

Incompréhensible !!!

Un peu d'aide, merci d'avance
Posté le 14 juin 2017 - 16:56
à tout hasard essaie d'utiliser une table hiérarchique pour faire un
treeview, la syntaxe est je trouve plus pratique.

en modifiant le style d'affichage tu peux avoir un rendu qui ressemble à
un treeview ;)

eric l.

Le 14/06/2017 à 13:04, Cyril a écrit :
Bonjour,

Je possède Windev 19 et je travaille actuellement sur un TreeView où
j'ai besoin d'y gérer des doublons.
Je cas se gère normalement avec la fonction ArbreID que l'on rajoute
dans les fonctions tel que ArbreAjoute, mais voilà, cela ne fonctionne
pas et les éléments et feuilles s'ajoute sur le premier élément du même
nom trouvé même en utilisisant l'exemple fourni dans l'aide :

RésultatArbre est un booléen

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" +
TAB + "Feuille", aDéfaut, aDéfaut, "Id feuille", aAccepteDoublon, "Id
feuille")

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" +
TAB + "Feuille", aDéfaut, aDéfaut, "Id feuille 2", aAccepteDoublon, "Id
feuille 2")

RésultatArbre = ArbreAjoute(ARBRE_Porteurs, "Racine" + TAB + "Noeud" +
TAB + "Feuille" + ArbreID("Id Feuille 2") + TAB + "Mon Elément",
aDéfaut, aDéfaut, "Mon Elément 1")






"Mon Elémént" s'ajoute à "Feuille" d'ID "Id Feuille" et non à "Feuille"
d'ID "Id Feuille 2" comme c'est codé.

Incompréhensible !!!

Un peu d'aide, merci d'avance