(ACCESS) parcours d'arbre recursif ??????

Fermé
plunulp - 20 févr. 2007 à 16:40
 plunulp - 21 févr. 2007 à 09:31
Bonjour,

J'ai un problème sur ACCESS et l'on m'a suggérer de faire un "parcours d'arbre récursif" pour y remédier... mais je ne sais pas ce que c'est !
Pourriez-vous me dire si c'est bien ça que je dois utiliser,
si oui : comment ?!
si non : que dois je faire alors ???!

Tables :
-la table process
Dans cette table j'ai les champs
Nom du process,
Réf process,
processus,
tâche
phase
- table données (relation plsrs - plsrs avec la table process car une donnée peut se retrouver ds plsrs process et un process a plusieurs données)
- une table détail donnée process pour faire la jonction avec les 2 tables précédentes étant donné que c'est une relation plrs-plsrs

Un exemple (c'est pas exctement ça mais je voudrais être claire):
Processus : anniversaire
Tâche : préparer le buffet
Phase : tarte aux pommes

donnée entrante a : pommes => process W couper les pommes => donnée sortante b quartiers

donnée c : lait + donnée d : farine + donnée e : oeufs => process X faire la pâte => donnée sortante f: pâte

donnée f : pâte + donnée b : quartiers => process Z mettre la tarte au four => donnée sortante g : tarte aux pommes

on a logiquement : process W : ordre 0 (pas d'antécédant)
process X : ordre 0 aussi
process Z : ordre 1 (il faut avoir coupé les pommes et fait la pâte pour faire la tarte !!


Mon problème:
Je cherche à ordonner automatiquement des process les uns par rapport aux autres.
Un process a des données entrantes et sortantes.
Raisonnement :
Si une donnée entrante provient d'un process Y, c'est que Y vient avant :
process Y => donnée A
donnée A => process Z
dc Y<Z
suis-je claire??
De même, si une donnée sortante d'un process H est la donnée entrante d'un process L, alors H<L
(j'espere que tt le monde suit)

Lorsque j'entre un nouveau process et ses données (entrantes/sortantes), je veux qu'ACCESS recherche si ses données font déjà partie de la liste des données.
Si c'est le cas, je souhaite qu'ACCESS attribue un numéro au nouveau process (antérieur aux process qui ont pour données entrantes une des données sortantes du nouveau process et postérieur aux process qui ont pour données sortantes une des données entrantes du nouveau process)
Je complique encore : lorsque j'introduis un nouveau process, ACCESS revois la numérotation (ordre) de tous les autres process déjà entrés
Je complique (si si c'est possible) : si un nouveau process a besoin de plusieurs données entrantes et que ces dernières proviennent de plusieurs autres process d'ordre différents, il faut que l'ordre du nouveau process soit = (ordre le plus élevé des process antécédents) + 1

J'espère de tout coeur que qulqu'un pourra m'aider car je ne connais rien à la programmation ! :-(

Mille mercis à ceux qui voudront bien m'aider !

1 réponse

blux Messages postés 26021 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 6 mai 2024 3 289
21 févr. 2007 à 08:52
Salut,

un parcours d'arbre récursif, ça consiste à modéliser tes process comme un arbre, en repartant du tronc (dernier process) et à remonter toutes les branches jusqu'aux feuilles pour voir si c'est l'oeuf ou la poule qui a commencé...

Comme il serait illusoire d'écrire un truc particulier pour ton usage, on utilise donc une méthode dite 'récursive' (qui s'appelle elle-même), puisque l'on se rend compte que l'on fait toujours la même chose : pacourir une branche, puis toutes les branches de la branche, puis les branches des branches de la branche, etc etc... pour arriver à la feuille (début de process)...

Il faut donc écrire un truc comme ça en VBA, c'est pas gagné...

https://codes-sources.commentcamarche.net/
0
Bonjour Blux,

Merci de t'être penché sur mon cas.
J'ai suivi le lien que tu m'as donné. Effectivement il faut que je fasse une sorte de recherche en boucle.... mais je ne vois pas vraiment le lien avec un anagramme, et je suis vraiment novice en matière de programmation. :-(

Pourrais-tu m'en dire davantage ou bien me diriger vers un autre site/une autre personne?

Merci
0