Bonjour,
J'ai deux tables en relation (voir miniature) et je désire afficher les données dans un treeview.
Premier cas, j'affiche d'abord les sites, puis les plongées. Le code ci-après fonctionne parfaitement :
Je désire également pouvoir les afficher dans l'ordre inverse, soit d'abord les plongées, ensuite le site où elle ont été effectuées.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Dim Db As DAO.Database Dim rst As DAO.Recordset Dim NodCurrent As Node, nodRoot As Node Dim objTree As TreeView Dim strSql As String Dim strText As String Set Db = CurrentDb 'Création de la référence à l'objet Treeview Set objTree = Forms!frmMenu!TrwMenu.Object Set NodCurrent = objTree.Nodes.Add(, , "a", "Liste des plongées par lieu") NodCurrent.ForeColor = RGB(128, 0, 0) 'Ajout des lieus de plongée strSql = "SELECT tblSites.SiteId, tblLieux.LieuNom, tblSites.SiteNom, tblPays.PaysNom " & _ "FROM ((tblPays INNER JOIN tblRegions ON tblPays.PaysId = tblRegions.RegionPays) " & _ "INNER JOIN (tblLieux INNER JOIN tblSites ON tblLieux.LieuId = tblSites.SiteLieu) " & _ "ON tblRegions.RegionId = tblLieux.LieuRegion) INNER JOIN tblPlongees " & _ "ON tblSites.SiteId = tblPlongees.PlongeeSite " & _ "GROUP BY tblSites.SiteId, tblLieux.LieuNom, tblSites.SiteNom, tblPays.PaysNom " & _ "ORDER BY tblLieux.LieuNom, tblSites.SiteNom;" Set rst = Db.OpenRecordset(strSql) Do Until rst.EOF strText = rst!LieuNom & " - " & rst!SiteNom & " - " & rst!PaysNom Set NodCurrent = objTree.Nodes.Add("a", tvwChild, "a" & rst![SiteId], strText) NodCurrent.ForeColor = RGB(128, 0, 0) rst.MoveNext Loop rst.Close Set rst = Nothing 'Ajout des plongées strSql = "SELECT tblPlongees.PlongeeID, tblPlongees.PlongeeSite, tblPlongees.PlongeeDate " & _ "FROM tblSites INNER JOIN tblPlongees ON tblSites.SiteId = tblPlongees.PlongeeSite " & _ "ORDER BY tblPlongees.PlongeeID;" Set rst = Db.OpenRecordset(strSql) Do Until rst.EOF strText = rst!PlongeeDate & " - " & "Plongée no " & rst!PlongeeID Set NodCurrent = objTree.Nodes.Add("a" & rst![PlongeeSite], tvwChild, "a" & rst![PlongeeID], strText) rst.MoveNext Loop rst.Close Set rst = Nothing Forms!frmMenu!TrwMenu.Nodes(1).Expanded = True
Pour le 1er niveau, c'est ok, mais quand je veux ajouter les sites, j'ai une erreur 35601 - élément introuvable sur la ligne précédée de ==> (au bas de la procédure).
Merci par avance de votre aide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 Dim Db As DAO.Database Dim rst As DAO.Recordset Dim NodCurrent As Node, nodRoot As Node Dim objTree As TreeView Dim strSql As String Dim strText As String Set Db = CurrentDb 'Création de la référence à l'objet Treeview Set objTree = Forms!frmMenu!TrwMenu.Object Set NodCurrent = objTree.Nodes.Add(, , "a", "Liste des plongées par ordre chronologique") NodCurrent.ForeColor = RGB(128, 0, 0) 'Ajout des plongées strSql = "SELECT tblPlongees.PlongeeID, tblPlongees.PlongeeDate " & _ "FROM tblPlongees ORDER BY tblPlongees.PlongeeID;" Set rst = Db.OpenRecordset(strSql) Do Until rst.EOF strText = rst!PlongeeDate & " - Plongée no " & rst!PlongeeID Set NodCurrent = objTree.Nodes.Add("a", tvwChild, "a" & rst![PlongeeID], strText) NodCurrent.ForeColor = RGB(128, 0, 0) rst.MoveNext Loop rst.Close Set rst = Nothing 'Ajout des sites strSql = "SELECT tblPlongees.PlongeeSite, tblSites.SiteId " & _ "FROM tblSites INNER JOIN tblPlongees ON tblSites.SiteId = tblPlongees.PlongeeSite;" Set rst = Db.OpenRecordset(strSql) Do Until rst.EOF strText = rst!SiteId ' & " - " & rst!SiteNom & " - " & rst!PaysNom ==> Set NodCurrent = objTree.Nodes.Add("a" & rst![PlongeeSite], tvwChild, "a" & rst![SiteId], strText) rst.MoveNext Loop rst.Close Set rst = Nothing Forms!frmMenu!TrwMenu.Nodes(1).Expanded = True
Domi2
Partager