Bonjour,
Voila j'ai une table UnEvenement qui se compose comme suit
IdUnEvenement (idAuto)
Nom (Chaine)
IdUnEvenementParent (Entier)
Ce qui me permet de creer la liste suivant
Anniversaire
|---Mail.Spam
|---Autre
Repas
|---Midi
|---Soir
----|--Semaine
----|--Wekkend
Ce qui donne dans ma table
1 Anniversaire 0
2 Mail.Spam 1
3 Autre 1
4 Repas 0
5 Midi 4
6 Soir 4
7 Semaine 6
8 Weekend 6
Voilà je voudrais afficher cela dans un champ arbre
J'ai donc penser à une procédure récursive
voici mon code
Initialisation de mon arbre
Et ma procedure Contenue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ArbreAjoute(FI_Evènement.Arbre, "Evènement", aDéfaut, aDéfaut, 0, aTriAlpha) Contenue(0,"Evènement")
Mais voilà la recursivite me change la position de mon enregistrement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 PROCEDURE Contenue(IdParent est un entier,UneFeuille est une chaîne) Nouvellefeuille est une chaîne NouveauIdParent est un entier // on regarde si la feuille contient des sous feuilles SI HLitRecherchePremier(UnEvènement,IdUnévèmentPArent,IdParent) ALORS TANTQUE HTrouve(UnEvènement) Nouvellefeuille = UneFeuille + TAB + UnEvènement.Nom NouveauIdParent = UnEvènement.IDUnEvènement Contenue(NouveauIdParent,Nouvellefeuille) HLitSuivant(UnEvènement) FIN SINON Trace(UneFeuille,IdParent) ArbreAjoute(Arbre,UneFeuille,aDéfaut,aDéfaut,IdParent,aTriAlpha) FIN
Et donc ne marche pas
J'ai essayé aussi avec une requête mais après la première recursivite il me dit
que ma requête est inconnu
voici le code avec la requête
Donc peux t on faire de la récursivité avec des filtre ou des requêtes
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 PROCEDURE Contenue(IdParent est un entier,UneFeuille est une chaîne) Nouvellefeuille est une chaîne NouveauIdParent est un entier MaRQT est Sources de Données // on regarde si la feuille contient des sous feuilles SI PAS HExécuteRequêteSQL(MaRQT,hRequêteDéfaut,"SELECT IDUnEvènement, Nom FROM UnEvènement WHERE IdUnévèmentParent = " + IdParent) ALORS Erreur(ErreurInfo()) SINON // On se place sur le premier enregistrement de la requête // Si on ne peut pas c'est qu'il n'y a pas d'enregistrement donc pas de sous feuille SI HLitPremier(MaRQT) ALORS TANTQUE PAS HEnDehors(MaRQT) Nouvellefeuille = UneFeuille + TAB + MaRQT.Nom NouveauIdParent = MaRQT.IDUnEvènement Contenue(NouveauIdParent,Nouvellefeuille) HLitSuivant(MaRQT) FIN SINON Trace(UneFeuille,IdParent) ArbreAjoute(Arbre,UneFeuille,aDéfaut,aDéfaut,IdParent,aTriAlpha) FIN FIN
Merci pour votre aide
Partager