Organigramme + récursivité

freddy1787 Messages postés 60 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 19 avril 2009 - 25 juil. 2006 à 15:52
azmah_1 Messages postés 2 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 22 novembre 2006 - 22 nov. 2006 à 18:26
 

Bonjour,

Je dois réaliser un organigramme pour ma boite et je suis bloqué !!
Il doit se construire à partir d'une base de donnée (SQLServer2005) qui est mise a jour continuellement avec l'active directory. Je n'ai que deux champs pour élaborer l'arbre:
"Manager" = > Toute personne ayant quelqu'un en dessous de lui
et
"NTName" => Tout les utilisateurs, managers compris.<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>






 






Exemple :






 










NTName         |           Manager











Boss                |          

null










sousboss1        |           boss









sousboss2        |           boss









soussousboss1|           sousboss1









sousousboss2   |           sousboss2
employé1         |           soussousboss1









employé2         |           soussousboss1









employé3         |           soussousboss1









employé4         |           soussousboss2









employé5           |           boss









Les deux champs sont sous la forme "domaine\utilisateur"

Voici mon code de construction de l'arbre:





Call arbre(pdg(0))       
//pdg(0) trouvé plus haut ...










Function espace(rang)





   Fonction de décallage


End Function




Function arbre(manager,rang)


Set rs = server.CreateObject("adoDb.recordset")


sql = "SELECT NTName FROM UserProfile WHERE manager='" & manager & "'" rs.




Open sql, conn




do while not rs.eof 


     if not isnull(rs.Fields(0).value) then 


      For i = 0 to rs.Fields.Count -1 


         enfant = rs.Fields(i).value 


            Call espace(rang) 


               Response.Write  enfant


            rang2 = rang + 1 


             Call arbre (enfant,rang2)


            next 


    end if


 loop 


End  Function








Ici il ne m'affiche que le premier bras avec qu'une seule personne à chaque fois!




Au lieu de faire:





BOSS





   |--sousboss1


   |         |--soussousboss1


   |                     |--employé1


   |                     |--employé2


   |                     |--employé3


   |--sousboss2


   |         |--soussousboss2


   |                     |--employé4


   |--employé5







Il dessine seulement:


  

 |--sousboss1





            |--soussousboss1


                        |--employé1

Si quelqu'un peut m'aider ce serait le TOP !!
Ou si quelqu'un a un lien qui pourrait m'aider ça serait trop cool !!

D'avance merci,
Freddy









http://www.timeorganizer.be

4 réponses

cs_Yopyop Messages postés 586 Date d'inscription lundi 7 janvier 2002 Statut Membre Dernière intervention 10 février 2010 1
26 juil. 2006 à 10:06
salut,

essaies

Function arbre(manager,rang)
Set rs = server.CreateObject("adoDb.recordset")
sql = "SELECT NTName FROM UserProfile WHERE manager='" & manager & "'" rs.
Open sql, conn
do while not rs.eof 
     if not isnull(rs.Fields(0).value) then   
         enfant = rs.Fields(0).value 
            Call espace(rang) 
               Response.Write  enfant
            rang2 = rang + 1 
             Call arbre (enfant,rang2) 
    end if 
   rs.movenext
 loop 
End  Function

yopyop
0
freddy1787 Messages postés 60 Date d'inscription mardi 24 juin 2003 Statut Membre Dernière intervention 19 avril 2009
26 juil. 2006 à 10:56
Bonjour,

Non ce n'est pas le rs.movenext qui manque. Je l'avais deja rajouté !
Mais je pense que le problme viens surtout de la logique en lui mm!

Merci,

Freddy
0
azmah_1 Messages postés 2 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 22 novembre 2006
22 nov. 2006 à 18:25






0
azmah_1 Messages postés 2 Date d'inscription mardi 14 novembre 2006 Statut Membre Dernière intervention 22 novembre 2006
22 nov. 2006 à 18:26






0
Rejoignez-nous