Gestion de cd avec ms access, (ajout, modif et supprime avec un treeview)

Soyez le premier à donner votre avis sur cette source.

Vue 16 320 fois - Téléchargée 2 300 fois

Description

Ce petit logiciel est quand même simple, même si j'ai buché pour comprendre le treeview avec un BD Access.

Ce petit logiciel me sert à faire ma Gestion de CD qui sont fait et disponible et ceux qui me reste à faire. Comme il n'y a pas tellement d'exemple avec un Treeview j'ai supossé que cela vous intéresserait.

Il reste un point que j'ai pas terminé, c'est le déplacement de Titre et d'InfoTitre dans le Non Disponible vers le Disponible.

Source / Exemple :


#Region " Remplir le TreeView "
    Public Sub LoadTreeview()
        Dim objDataSet As New DataSet

        SQLString = "SELECT * FROM T_CD_Groupe ORDER BY Groupe ASC"
        Dim objDataAdapterGroupe As New OleDb.OleDbDataAdapter(SQLString, objConnection)

        SQLString = "SELECT * FROM T_CD_Categorie ORDER BY Categorie ASC"
        Dim objDataAdapterCategorie As New OleDb.OleDbDataAdapter(SQLString, objConnection)

        SQLString = "Select * from T_CD_Titre ORDER BY TitreCD ASC"
        Dim objDataAdapterTitre As New OleDb.OleDbDataAdapter(SQLString, objConnection)

        SQLString = "Select * from T_CD_InfoTitre"
        Dim objDataAdapterInfo As New OleDb.OleDbDataAdapter(SQLString, objConnection)

        objConnection.Open()

        objDataAdapterGroupe.Fill(objDataSet, "dtGroupe")
        objDataAdapterCategorie.Fill(objDataSet, "dtCategorie")
        objDataAdapterTitre.Fill(objDataSet, "dtTitre")
        objDataAdapterInfo.Fill(objDataSet, "dtInfoTitre")

        objConnection.Close()

        'Créé une relation entre les Tables.
        objDataSet.Relations.Add("GrToCat", objDataSet.Tables("dtGroupe").Columns("GroupeID"), _
                                                objDataSet.Tables("dtCategorie").Columns("GroupeID"))
        objDataSet.Relations.Add("CatToTitre", objDataSet.Tables("dtCategorie").Columns("CategorieID"), _
                                                objDataSet.Tables("dtTitre").Columns("CategorieID"))
        objDataSet.Relations.Add("TitreToInfo", objDataSet.Tables("dtTitre").Columns("TitreCDID"), _
                                                objDataSet.Tables("dtInfoTitre").Columns("TitreCDID"))
        '''''''''''''''''''''''
        TreeView1.Nodes.Clear()
        Dim drGroupe As DataRow
        Dim ParentTable As DataTable
        ParentTable = objDataSet.Tables("dtGroupe")

        For Each drGroupe In ParentTable.Rows
            Dim ParentNode As TreeNode
            ParentNode = New TreeNode(drGroupe.Item(1))
            TreeView1.Nodes.Add(ParentNode)
            ParentNode.Tag = drGroupe("GroupeID")

            ''''populate child'''''
            '''''''''''''''''''''''
            Dim drCategorie As DataRow
            Dim childnode As TreeNode
            childnode = New TreeNode
            For Each drCategorie In drGroupe.GetChildRows("GrToCat")
                childnode = ParentNode.Nodes.Add(drCategorie(2))
                childnode.Tag = drCategorie("CategorieID")

                ''''populate child2''''
                ''''''''''''''''''''''''''
                Dim drTitre As DataRow
                Dim ChildNode2 As TreeNode
                ChildNode2 = New TreeNode
                For Each drTitre In drCategorie.GetChildRows("CatToTitre")
                    ChildNode2 = childnode.Nodes.Add(drTitre(2))
                    ChildNode2.Tag = drTitre("TitreCDID")

                    ''''populate child3''''
                    ''''''''''''''''''''''''''
                    Dim drInfoTitre As DataRow
                    Dim ChildNode3 As TreeNode
                    ChildNode3 = New TreeNode
                    For Each drInfoTitre In drTitre.GetChildRows("TitreToInfo")
                        ChildNode3 = ChildNode2.Nodes.Add(drInfoTitre(2))
                        ChildNode3.Tag = drInfoTitre("InfoID")
                    Next drInfoTitre
                    '''''''''''''''''''''''''
                Next drTitre
                ''''''''''''''''''''''''
            Next drCategorie
            '''''''''''''''
        Next drGroupe
        TreeView1.Nodes(0).Expand()
        TreeView1.Nodes(0).Nodes(1).Expand()
    End Sub
#End Region

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
18 mars 2009

Bravo !
ça fait plaisir
Messages postés
1
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
23 février 2008

Bravo !
C'est un exemple modèle, c'est très bien monté et détaillé. Même pour un débutant comme moi, j'arrive à m'y retrouver.

Penses-tu que tu pourrais ajouter une procédure, avec un bouton, qui pourrait ajouter un groupe à la racine de l'arboraissance ?

Dans le treeview, peut-on faire apparaitre un deuxième champ ?
EX:
Dans Access:
Table: T_CD_InfoTitre
Champ: InfoID,TitreCDID,InfoTitre,NOMAUTEUR

Dans le treeview...est-ce possible de faire afficher
cela ainsi ? Le champ "NOMAUTEUR" peut s'afficher à la
suite du champ "InfoTitre" sur un même "Child" ?

-Groupe
- Categorie
-Titre CD
-InfoTitre + NOMAUTEUR

si vous avez une solution ou des réponses à mes questions...voici mon courriel : tissot_pr200@hotmail.com
Messages postés
35
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
6 mai 2005

comme l'a dit Ruffus, il faut qu'au coeur meme de ta fonction, il appelle la meme fonction. Il à écrit :

proc sample() <------ !!
for .. each
if (child )
{
sample() <----- !!
}
return

Tu vois la fonction "sample" est appelé dans la fonction "sample", et non chui pas gateu, je ne me repette pas :)

Tu vois les possibilités d'une telle methode ? non ?
Messages postés
76
Date d'inscription
dimanche 25 juillet 2004
Statut
Membre
Dernière intervention
20 mars 2006

En effet, il est limité à 4 niveaux, j'ai de la difficulté à voir comment je pourrais le rendre récursif. Si tu as une solution, je serais curieux de voir comment tu fais.

Merci
Messages postés
2
Date d'inscription
lundi 6 décembre 2004
Statut
Membre
Dernière intervention
16 janvier 2005

correction je l'ai fait un peu vite

proc sample()
for .. each
if (child )
{
sample()
}
return
Afficher les 8 commentaires

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.