IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Remplissage d'un treeview


Sujet :

VBA Access

  1. #1
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut Remplissage d'un treeview
    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 :

    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
    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.

    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).

    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
    Merci par avance de votre aide.

    Domi2

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Ok, je crée le noeud fils immédiatement après le noeud parent et ça fonctionne.

    Code :

    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
        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)
     
        strSql = "SELECT tblPlongees.PlongeeID, tblPlongees.PlongeeDate, 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 " & _
                 "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)
            strText = rst!LieuNom & " - " & rst!SiteNom & " - " & rst!PaysNom
            Set NodCurrent = objTree.Nodes.Add(NodCurrent, tvwChild, , strText)
            rst.MoveNext
        Loop
     
        rst.Close
        Set rst = Nothing
     
        Forms!frmMenu!TrwMenu.Nodes(1).Expanded = True
    Domi2

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Exemple de remplissage de treeview
    Par Tofalu dans le forum Contribuez
    Réponses: 15
    Dernier message: 21/01/2015, 18h15
  2. SQL et requête pour remplissage d'un treeview en vb.net
    Par catchouse dans le forum Développement
    Réponses: 6
    Dernier message: 14/05/2009, 09h59
  3. Remplissage d'un Treeview a partir de la base de données
    Par Alabama-song dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 10/01/2008, 20h33
  4. Remplissage récursif d'un treeview.
    Par nek_kro_kvlt dans le forum Delphi
    Réponses: 4
    Dernier message: 07/12/2006, 09h38
  5. [c#]Remplissage d'un treeview
    Par denden dans le forum Windows Forms
    Réponses: 3
    Dernier message: 29/06/2006, 15h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo