PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV (précédentes versions) → Remplacer les boucles
Remplacer les boucles
Débuté par tacfl, 19 mai 2017 15:04 - 3 réponses
Membre enregistré
13 messages
Posté le 19 mai 2017 - 15:04
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 modifié, 19 mai 2017 - 15:19
Posté le 19 mai 2017 - 19:56
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()
Membre enregistré
2 566 messages
Popularité : +222 (260 votes)
Posté le 20 mai 2017 - 15:31
Bonjour,

Regarde la propriété AjouteFilsDiffere.

--
Cordialement,

Philippe SAINT-BERTIN
Géode Informatique
Membre enregistré
5 messages
Posté le 03 juin 2017 - 12:00
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...