Le TreeVieuw (control type explorateur)est utilisé pour explorer et trier une base de donnée (ou autre).Arborescence utile qui élimine plusieurs requètes de trie.
Source / Exemple :
'***********ce code fonctione trés bien sur mes bases de données)*******************
'***********je prévient ce qui desir mettre leur nez là dedans *******************
'***********meme pour moi ce code devient compliqué *******************
'***********je l'ai mis a jour au fur est a mesure de mes besoins *******************
'***********et par moment j'ai de la dificultée a mis retrouver ********************
'**********" mais bon ca marche *******************
'***********j'accepte toutes critiques a condition qu'elles soit constructives************
'***********'je n'ai pas mis mon propre code car il faudrais mes bases ***********
'********** de plus aider ne veut pas dire faire le boulot************************
'***************************************************************************
'***************************************************************************
'***************************************************************************
Private Sub Affiche_Treevieuw()
'===========================================================
'Definition des base de donnée
'dans mon exemple, j'ai trié mes base de donnée en trois partie
'afin d'accélerer les recherches
'une base principale qui regroupe les enregistrement,et 2 autres qui permetent d'enregistrer les nouvel enregistrement
' Deuxieme serait = secteur d'activité (Theatre ,cinema,foire cirque etc..)
'troisieme serait = lieu ou autre bien sur 'pour moi j'utilise ce treevieuw dans le domaine du batiment !!
'il suffit de creer une base de donnée Nommé :"artiste (par exemple)
' y inclure une table qui concerne le premier index de recherche et qui regroupe toutes les données
'et deux autres (Deuxieme et troisieme table) qui enregistre differente donnée et qui permete de faire d'autre recherche
Set deuxiemeIndex = mDbBiblio.OpenRecordset("deuxieme", dbOpenDynaset)
Set RsArtiste = mDbBiblio.OpenRecordset("Artiste", dbOpenDynaset)
Set TroiziemeIndex = mDbBiblio.OpenRecordset("Troizieme", dbOpenDynaset)
'=======================================================================
prgLoad.Visible = True
sbrDB.Style = sbrSimple
'ouverture de la la MDB et fait une boucle sur le premier index (num_id=1)
Do Until RsArtiste.EOF
Set mNode = tvwDB.Nodes.Add(1, tvwChild, RsArtiste!fo_num_id _
& " NUM_ID", CStr(RsArtiste!fo_nom), "closed")
mNode.Tag = "Artiste"
'====================Recherche du deuxieme index de l'arborescence====================
'passage pour utiliser un ordre de trie <> (pas indispensable)
'utiliser l'un ou l'autre criterre de recherche
If RsArtiste!fo_num_id <> 1 Then
Set TroiziemeIndex = mDbBiblio.OpenRecordset _
("Select * From Troizieme Where Num_ID= " & RsArtiste!fo_num_id _
& " order by deuxieme asc")
Else
'****************Modif ordre de trie**************************************************
Set TroiziemeIndex = mDbBiblio.OpenRecordset _
("Select * From Troizieme Where st_ref= " & RsArtiste!fo_num_id _
& " order by deuxieme asc,ral desc")
End If
'***********************************************************************************************
nb_tmp = TroiziemeIndex.RecordCount 'Calcule le Nb d'enreg pour la boucle
If nb_tmp = 0 Then GoTo suite 'si nb_tmp = 0 passe
intIndex = mNode.Index 'Conserve l'index pour l'arborescence
ID_Artiste = intIndex
'====================Recherche deuxiemeS Artiste===========
Retour:
Tmp_deuxieme = TroiziemeIndex!deuxieme
'lancement de la deuxieme boucle de recherche
'afin de creer une deuxieme arborescence
Set deuxiemeIndex = mDbBiblio.OpenRecordset _
("Select * From deuxieme Where num_id= " & Tmp_deuxieme)
Set mNode = tvwDB.Nodes.Add(ID_Artiste, tvwChild, , , "Boite")
mNode.Text = deuxiemeIndex!fa_nom ' Texte.
mNode.Tag = mNode.Text '"deuxiemeS"
prgLoad.Value = TroiziemeIndex.PercentPosition
'=============================================================
'ici je mémorise un index suplémentaire
'afin de créer une sous arborescence
If TroiziemeIndex!ral = 0 Then
Tmp_Dif = 0
intIndex = mNode.Index
GoTo suite
End If
If IsNull(TroiziemeIndex!ral) Then
Tmp_Dif = 0
intIndex = mNode.Index
GoTo suite
End If
If TroiziemeIndex!ral = "VRS500" Then
Tmp_Dif = 1
intIndex = mNode.Index
ID_Ral = intIndex
GoTo suiteVRS500
End If
If TroiziemeIndex!ral = "9999" Then
Tmp_Dif = 1
intIndex = mNode.Index
ID_Ral = intIndex
Tmp_Ral = TroiziemeIndex!ral
GoTo suiteVRS500
End If
intIndex = mNode.Index
ID_Ral = intIndex
suite:
'=============================================================
'vola je réalise le remplissage de mon arborescence
'avec tous les éléments don j'ai besoin
Do Until TroiziemeIndex.EOF
Tmp_Ral = TroiziemeIndex!ral
If Tmp_deuxieme <> TroiziemeIndex!deuxieme Then
If TroiziemeIndex!deuxieme < Tmp_deuxieme Then GoTo Fin
Tmp_deuxieme = TroiziemeIndex!deuxieme
GoTo Retour
End If
'================CHERCHE un index===========================
If TroiziemeIndex!ral > 0 Then
suiteVRS500: 'ne pas tenir compte de ces N° elles sont perso mais les remplacer par les votres ??
If Not IsNull(TroiziemeIndex!ral) Then
If Tmp_Dif = 1 Then
intIndex = ID_Ral
ID_Ral = intIndex
Set mNode = tvwDB.Nodes.Add(ID_Ral, tvwChild, , , "Pen06") 'pen06(dans VB est un icone pour l'arborescence)
If TroiziemeIndex!ral = 9999 Then
mNode.Text = "Couleur :Brut"
Else
mNode.Text = "Couleur : " & TroiziemeIndex!ral ' Texte..
End If
mNode.Tag = "COULEUR"
intIndex = mNode.Index
Index = intIndex
Set mNode = tvwDB.Nodes.Add(Index, tvwChild, , , "Note3")
mNode.Text = TroiziemeIndex!designation ' Texte.
mNode.Tag = "DETAIL"
GoTo fin2
Else
Set mNode = tvwDB.Nodes.Add(Index, tvwChild, , , "Note3")
mNode.Text = TroiziemeIndex!designation ' Texte.
mNode.Tag = "DETAIL"
GoTo fin2
End If
End If
'=============================================================
Else
Set mNode = tvwDB.Nodes.Add(intIndex, tvwChild, , , "Note3")
mNode.Text = TroiziemeIndex!designation ' Texte.
mNode.Tag = "DETAIL"
End If
'=============================================================
fin2:
mNode.Image = "Note3" ' Image du contrôle ImageList.
TroiziemeIndex.MoveNext ' Se déplace vers l'enregistrement suivant dans TroiziemeIndex.
If TroiziemeIndex.EOF = True Then GoTo Fin
New_Ral = TroiziemeIndex!ral
If IsNull(New_Ral) Then New_Ral = 0
If IsNull(Tmp_Ral) Then Tmp_Ral = 0
If New_Ral <> Tmp_Ral Then
Tmp_Dif = 1
Else
Tmp_Dif = 0
End If
Loop
Fin:
RsArtiste.MoveNext ' Se déplace vers l'enregistrement suivant dans Publishers.
Loop
prgLoad.Visible = False ' Masque le contrôle Progressbar
sbrDB.Style = sbrNormal ' Affecte le style normal pour le contrôle Statusbar.
tvwDB.Nodes(1).Sorted = True ' Trie les noeuds de Publishers.
tvwDB.Nodes(1).Expanded = True ' Développe le noeud du haut.
deuxieme.Close
RsArtiste.Close
TroiziemeIndex.Close
End Sub
Private Sub Form_Load()
' Configure le contrôle ProgressBar.
prgLoad.Max = 100
' Ouvre Biblio.MDB et affecte la variable objet à la base de données.
Chemin = App.Path + "\Artistes.mdb"
Set mDbBiblio = DBEngine.OpenDatabase(Chemin)
' Configure le contrôle TreeView.
tvwDB.Sorted = True
Set mNode = tvwDB.Nodes.Add()
mNode.Text = "STOCK :"
mNode.Tag = mDbBiblio.Name
mNode.Image = "closed"
tvwDB.LabelEdit = False
Affiche_Treevieuw
End Sub
Private Sub tvwDB_Collapse(ByVal Node As Node)
If Node.Tag = "STOCK" Or Node.Index = 1 Or Node.Tag = "FOURNISSEUR" Then Node.Image = "closed"
End Sub
Private Sub tvwDB_Expand(ByVal Node As Node)
If Node.Tag = "STOCK" Or Node.Index = 1 Or Node.Tag = "FOURNISSEUR" Then
Node.Image = "open"
Node.Sorted = True
End If
End Sub
Conclusion :
Ce code ne fonctionnera pas temp que la base ne sera pas créée.(elles ne se seront pas dans le zip "maillez moi pour plus de détailles")
Je depose ce code a la demande d'un internaute bien precis ,(qui ce reconnaitra),et en meme temp pour en faire profiter les autres .
A vous de l'aménager à votre guise .
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.