|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Contexte : Application de gestion de personnel. Le directeur souhaite pouvoir consulter la hiérarchie directe entre ses employés :
Exemple : Le dessinateur dépend du responsable du bureau d’étude qui lui-même dépend du responsable technique qui dépend du directeur général. Spécificité : Chaque employé est sous les ordres d’un seul et unique chef. Le TreeView ne permet pas de gérer les héritages multiples. Structure : Une seule table : tblEmploye(NumEmploye,NomEmploye,PrenomEmploye,RoleEmploye,ResponsableEmploye#) ResponsableEmploye correspond au numéro de l’employé qui le dirige. Il s’agit donc d’une clé étrangère. Jeu d’essai : tblEmploye Citation:
On commence à l’empoyé qui n’a pas de responsable, puis ceux sous ses ordres, etc. Dans un module : Code :
Le code qui déclenchera cette procédure sera écrit dans l’événement Load du formulaire contenant le TreeView : Citation:
|
||||
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Inscription : septembre 2005 Messages : 310 ![]() |
'jour Tofalu, 'jour tout le monde,
Merci pour cette source qui, je pense, pourra en aider plus d'un :-) Tu nous indque ne permet pas de gérer les héritages multiples, c'est fou ça il n'y a vraiement aucun moyen de le faire ? Car comment ferais-tu alors, dans le cas d'un employé ayant 2 responsables directs, pour visualiser l'ensemble des employés d'un responsable sachant qu'une personne peut apparaitre sous un voir plusieurs responsables ? Autre exemple : j'ai une société qui commercialise des caisses à outils et donc je souhaite recenser tous les modèles de caisses avec les outils standards (clés, pinces,...) vendus avec la caisse. Un même type d'outils peut donc apparaitre dans plusieurs caisses, comment faire ? Dans ces cas là on tombe à chaque fois en "Key is not unique in collection". C'est là que l'on va voir jusqu'où la folie d'access (dans le bon sens du terme ;-) peut nous emmener. Merci d'avance pour les réponses à ces questions ;-) @+ |
|
|
00
|
|
|
#3 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Tu as mal compris.
On ne peut pas représenter un fils déscendant de deux parents directement. Par contre on peut créer un fils décendant du pere et un fils (le même) descendant de la mère. Par contre, tu ne pourras pas avoir un arbre : un héritage multiple Pour cette histoire de clé, il suffit d'avoir une clé composite : Parent & Enfant |
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : septembre 2005 Messages : 310 ![]() |
Donc finalement, je peux avoir un arbre avec cette situation si je crée une clé composite ? ou alors je n'ai toujours rien compris lol !!!
|
|
|
00
|
|
|
#5 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Ce ne sera pas un arbre, puisqu'un même noeud (géographiquement parlant) ne pourra pas déscendre de deux branches.
Par contre une donnée sera illustrée par deux noeuds distincts descendant chacun d'une branche différente. Le plus simple pour montrer que l'on ne peux pas avoir d'arbre est d'en dessiner un sur une feuille. Tu t'apercevra alors que ça ne correspond pas à l'aspect graphique du treeview |
|
|
00
|
|
|
#6 | ||
|
Membre habitué
![]() Inscription : septembre 2005 Messages : 310 ![]() |
Effectivement, j'ai bien compris le principe.
Donc l'idée serait de créer un 3ème champ dans la table, par exemple, qui contiendrait la concatenation des 2 autres champs ? Si je prends un exemple basique avec des valeurs numérique : -> un arbre (frmTreeview.JPG) ->basé sur cette table (tblTreeview.jpg) ->à l'aide de ce code (venant de developpez.com bien sur ;-)) Code :
Que dois-je changer dans le code, c'est là que j'ai du mal !!! Je me pencherais bien sur Code :
Tree.Nodes.Add "f" & Article_Fab, tvwChild, "f" & Rs!ArticleComposant, Rs!ArticleComposant Merci d'avance... |
||
|
|
00
|
|
|
#7 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Resalut,
une petite question: si tu ajoute l'enregistrement: 2 12, 12 étant le père de 121,122 on aura alors: les branches: 1-12-121 1-12-122 mais aussi 2-12-121 2-12-122 dans ce cas si tu prend (ArticleFab,ArticleComposant) comme clé tu aura 2 fois 12-121 et 2 fois 12-122 comme clé dans ton arbre et donc 1 message d'erreur ! Dans ce cas il faut concaténer tous les noeuds depuis la racine pour avoir une clé unique. Peux-tu préciser ? @+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#8 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
La clé de 12 n'est pas 2 mais :
1-12 et 2-12 La clé composite de 121 n'est pas 12-121 mais 1-12-121 et 2-12-121. Mais bon aprés, on peut s'arranger comme on veut. Par exemple un id unique (génération incrémentale) suivie de la clé de l'enregistrement (et non du noeud) |
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Inscription : septembre 2005 Messages : 310 ![]() |
-> User mon problème est bien là, il va falloir que je concatene pour éviter les message d'erreur mais je ne sais pas comment ensuite alimenter le treeview avec ces id unique...!
-> Tofalu je pense avoir compris le principe mais derrière comment j'alimente le treeview ? :-) Merci |
|
|
00
|
|
|
#10 | ||||
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
pour concatener dans ta sub tu peux essayer ca:
Code :
et sur open de ton form: Code :
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
||||
|
00
|
|
|
#11 | ||
|
Membre habitué
![]() Inscription : septembre 2005 Messages : 310 ![]() |
Merci User...
Vous trouverez en pj une image du treeview ;-). Cependant il me reste 3 tites questions : 1) pourquoi le treeview est-il "dérouléé à l'ouverture, comment faire pour réduire toutes les branches ? 2) je parcours 4000 lignes environ donc il met quelques 40/45sec à s'ouvrir, ne peut-on pas l'optimiser en terme de rapidité ? Je suis basé sur une table ? 3) plutôt que d'avoir une série de chiffres, j'ai la correspondance avec des références textuel que j'ai inséré dans la table tblTreeview en [FabDescription] & [ComposantDescription]. Je suppose qu'il est préférable de garder les numérique pour construire le treeview, mais comment faire apparaitre ces données présentes dans ces 2 champs ald des valeurs numérique ? Merci encore énormément à tous pour votre aide... @+ Code :
|
||
|
|
00
|
|
|
#12 |
![]() ![]() Denis Développeur informatique Inscription : août 2004 Messages : 3 206 ![]() |
Salut,
pour le 1), il faut supprimer dans le code les commandes: tree.Nodes("f" & rs!ArticleFab).EnsureVisible et tree.Nodes("f" & ArticleId & rs!ArticleComposant).EnsureVisible 2):Je verrai d'ici ce soir si je peux l'optimiser.. (Essaie de comprendre le code, ca peut t'aider à y voir plus clair, il y a juste la recherche des racines dans la table qui est différent du code de Tofalu) 3) Ca aussi pour le moment je n'ai pas le temps..mais j'y reviens.. @+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp. Bon développement ! Mes tutoriels et contributions sur ma page perso: Ma page personnelle |
|
00
|
|
|
#13 |
![]() ![]() ![]() Christophe Warin Inscription : octobre 2004 Messages : 8 635 ![]() |
Attention, ce forum est réservé aux contributions. Pas aux questions relatives à ton projet. Merci d'enrichir ton topic prinicpal pour toute question
|
|
|
00
|
|
|
#14 |
|
Membre habitué
![]() Inscription : septembre 2005 Messages : 310 ![]() |
-> User, merci pour ton aide, il est vrai que j'ai du mal avec ce code, mais je n'ai ni aide, ni assisstant et sous 97 sur le pc où je suis donc c'est bancale ;-)
-> Tofalu j'avoue que là il aurait été préférable de revenir sur l'autre fil, j'ai complètement zappé c'est ma faute Merciiiiiiiiiii |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com