1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| Dim WithEvents rsCli As ADODB.Recordset
Dim WithEvents rsEmp As ADODB.Recordset
Dim WithEvents rsCde As ADODB.Recordset
Les 3 lignes précédentes déclarent des curseurs ADO
pour 3 tables Clients,employés et commandes.
Du dois avoir la référence Microsoft ADO Activée.
Ou alors, tu utilises des curseurs DAO.
Pour cela tu actives les références Microsoft Data Access Component.
Je sais pas si ca marche les WithEvents. Moi je les retirerais si ca marche pas.
Avec DAo tu déclares et initialises comme suit:
Dim db as DAO.Database
Dim rsCli As DAO.Recordset
Set db = CurrentDb
Set rsCli = db.OpenRecordset ("Clients")
Et pour parcourir les elements tu fais comme suit,ici j'affiche le premier champ :
Do until rsCli.EOF
MsgBox rsCi.Fields(0)
rsCli.EOF
'Passer à l'élement suivant
rsCli.MoveNext
Loop
'pour fermer ton curseur
rsCli.Close
Set rsCli = Nothing
'avant tout créer un formulaire, place un treeview dessus, tu vas
sur la barre d'outil formulaire et autres composants . Dans la liste des activeX tu vas chercher le Treeview. Version 5.0 ou 6.0.
Il me semble que la 6 est plus sophistiquée, tu peux faire des drag & drop.
Le treeview crée, tu peux double cliquer dessus. Tu as toutes ses propriétés personnalisées.
Commence par modifier son nom en "ocxTree".
Regarde le type de noeud utilisés (PlusMinusText ou images)
Alors la, c'est codé sur un evenement update, je te conseille de te faire
sur Form_Load de ton formulaire!
Private Sub cmdUpdate_Click()
'déclaration des variables
'ci dessous, tu déclares un noeud. du treeview
'que tu utilises pour insérer un noeud père ou fils.
Dim x As Node
'Réaffectation des recordsets pour mise à jour
If rsCli.State = adStateClosed Then rsCli.Open "Clients", _
CurrentProject.Connection, adOpenStatic
If rsEmp.State = adStateClosed Then rsEmp.Open "Employés", _
CurrentProject.Connection, adOpenStatic
rsCli.Requery: rsCli.MoveFirst
rsEmp.Requery: rsEmp.MoveFirst
'si les lignes du dessus ne marchent pas. Commence par tester avec
'un curseur DAO comme je t'ai expliqué au dessus. Pour cela tu déclares un objet database et un DAO.Recorsdet, que tu utilises pour manipuler tes données ensuite. regarde l'aide Acess sur DAO pour progresser.
'Définition du treeview
ocxTree.Nodes.Clear
'pour vider toutes les noeuds du treview nommé ocxTree
'--Clients
'ci-dessous ajout des clients en tant que noeud pères
'avec Nodes.Add(texte de la relation,type de relation,
valeur de la clé,texte de l'élément,Index de l'image affichée sur l'élément
Alors attention aux ImageList, pour cela, tu dois créer un objet ImageList.
Et y placer tes images (image pour étendre un élément Plus ou Moins par exemple)
Sinon tu fais sans images, tu retires la valeur 1 dans le dernier paramètre.
Set x = ocxTree.Nodes.Add(, , "c", "Clients", 1)
x.ExpandedImage = 2
'ajouts des clients fils de la clé "c" en parcourant le curseur rsCli
Do Until rsCli.EOF
Set x = ocxTree.Nodes.Add("c", tvwChild, "C-" & rsCli(0), rsCli(1) & _
" (" & rsCli(2) & ")", 1)
'passage au suivant
rsCli.MoveNext
Loop
'--Employés
'idem pour les employés ...
Set x = ocxTree.Nodes.Add(, , "e", "Employés", 1)
x.ExpandedImage = 2
Do Until rsEmp.EOF
Set x = ocxTree.Nodes.Add("e", tvwChild, "E-" & rsEmp(0), rsEmp(1) & _
" " & rsEmp(2), 1)
rsEmp.MoveNext
Loop
End Sub |
Partager