Procédure récursive avec requête
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
Code:
1 2
| ArbreAjoute(FI_Evènement.Arbre, "Evènement", aDéfaut, aDéfaut, 0, aTriAlpha)
Contenue(0,"Evènement") |
Et ma procedure Contenue
Code:
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 |
Mais voilà la recursivite me change la position de mon enregistrement
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
Code:
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 |
Donc peux t on faire de la récursivité avec des filtre ou des requêtes
Merci pour votre aide