PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV (earlier versions) → Remplacer les boucles
Remplacer les boucles
Started by tacfl, May, 19 2017 3:04 PM - 3 replies
Registered member
13 messages
Posted on May, 19 2017 - 3:04 PM
Bonjour,

Je travaille en ce moment (sur Windev 21) sur une application qui a pour but de gérer une base de données (avec accès natif Mysql) et d'afficher sous forme d'un arbre hiérarchisé les éléments,sous-éléments, etc qu'elle contient. Pour faire cela j'utilise donc la fonction ArbreAjoute afin de placer l'élément en cours où je le désire. Cependant, pour chaque élément je dois faire un ArbreAjoute et donc faire une boucle sur chaque fichier contenant mes élément de différent niveau (voir code ci-dessous). Le problème de cette méthode c'est qu'elle est particulièrement longue (car je suis obligé de la faire lors de l'initialisation de l'arbre) surtout lorsque que le nombre d'éléments augmente.
Existerait-il une autre méthode me permettant d’accélérer l'initialisation de l'arbre?

Merci d'avance pour votre aide,
Cordialement,




POUR TOUT Test_Projet
ArbreAjoute(ARBRE_test,Test_Projet.Nom)
POUR TOUT Test_Produit
//test sur la date de garantie
SI Test_Produit.Date_de_garantie < DateDuJour() ET Test_Produit.infogarantie = Faux ALORS
Info(Test_Produit.Nom + " a dépassée la date de garantie")
Test_Produit.infogarantie=Vrai
HEnregistre(Test_Produit)
FIN
SI Test_Produit.IDTest_Projet=Test_Projet.IDTest_Projet ALORS
ArbreAjoute(ARBRE_test,Test_Projet.Nom + TAB + Test_Produit.Nom)
POUR TOUT Test_Carte
//test sur la garantie
SI Test_Carte.Date_de_garantie < DateDuJour() ET Test_Carte.infogarantie = Faux ALORS
Info(Test_Carte.Nom + " a dépassée la date de garantie")
Test_Carte.infogarantie=Vrai
HEnregistre(Test_Carte)
FIN
SI Test_Carte.IDTest_Produit=Test_Produit.IDTest_Produit ALORS
ArbreAjoute(ARBRE_test,Test_Projet.Nom + TAB + Test_Produit.Nom + TAB + Test_Carte.Nom)
FIN
FIN
FIN
FIN
FIN
Message modified, May, 19 2017 - 3:19 PM
Posted on May, 19 2017 - 7:56 PM
Tu peux créer une table fichier, et il y a alors la possibilité de faire une table hiérarchique qui correspond à ton besoin.

Si tu souhaites rester sur des tables mémoire, il va falloir lire toutes les données, en se débrouillant pour les lire à peu près dans l'ordre, puis pour chaque ligne lue, il faut faire un TableCherche() avant le TableAjouteFils()
Registered member
2,574 messages
Popularité : +222 (260 votes)
Posted on May, 20 2017 - 3:31 PM
Bonjour,

Regarde la propriété AjouteFilsDiffere.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Registered member
5 messages
Posted on June, 03 2017 - 12:00 PM
Bonjour,

Sur votre arbre, vous pouvez deja passer la propriété ..AffichageActif a faux pendant tout le remplissage, ce qui evite des recalculs a chaque arbreAjoute.
Ensuite, ayant eu un peu la meme problematique sur une table hierarchique, j'ai fini par ne remplir que le premier niveau, puis le niveau suivant que lorsque l'utilisateur selectionne un elt dans l'arbre.
On ne voit pas du coup s'il s'agit d'une feuille ou d'une branche. Sinon, faire un mixte, ne remplir que les 2ers niveaux, et remplir le 3eme a la volée qd l'utilisateur selectionne le 1er...