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

VB.NET Discussion :

TreeView et Sql Server


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 26
    Par défaut TreeView et Sql Server
    Bonjour!
    Je vien à vous car j'ai un léger problème.
    Je n'ai jamais utiliser de TreeView, et là, pour mon projet il faut que je l'utilise.
    J'ai donc commencer mais je n'arrive pas à la mettre en place. Voilà ce que j'ai fait :

    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
    Dim i As String
            Dim y As Integer = -1
     
            Cnx()
            If Connexion.State <> 1 Then
                MessageBox.Show("La connexion au serveur n'a pas été réalisée")
            Else
                strRequete = "SELECT NomSociete, NomEmploye, S.idSociete FROM Societes S, Employes E WHERE S.idSociete = E.idSociete " & _
                             "GROUP BY NomSociete, NomEmploye, S.idSociete ORDER BY NomSociete "
                Try
                    Dim Command As New SqlClient.SqlCommand(strRequete, Connexion)
     
                    'Déclaration d'un tableau mémoire destiné à recevoir le résultat de la requête (SqlDataReader)
                    Dim SdrList As SqlClient.SqlDataReader
     
                    'Initialisation de celui ci
                    SdrList = Command.ExecuteReader
     
                    'On le parcour, tant qu'il existe encore une ligne à lire
                    Do While SdrList.Read()
     
                        'Ajout d'une ligne dans le treeview
                        TvListeSoc.Nodes.Add(SdrList("NomSociete"))
                        'Incrémentation de l'index
                        y = y + 1
     
                        i = SdrList("idSociete")
     
                        Do While i = SdrList("idSociete")
     
                            'Ajout d'une ligne dans le treeview, ligne qui aura pour parent le ligne d'index y
                            TvListeSoc.Nodes(y).Nodes.Add(SdrList("NomEmploye"))
                            SdrList.Read()
     
                        Loop
     
                    Loop
     
                    'Fermeture de SqlDataReader
                    SdrList.Close()
                    Connexion.Close()
     
                Catch Probleme As Exception
                    MessageBox.Show("L'erreur suivante a été rencontrée : " + Probleme.Message, "Erreur")
                End Try
                Connexion.Close()
            End If
    Le problème est que je lit deux fois de suite dans le DataReader lorsque j'ai finis d'établir les enfants de ma première ligne. Je ne voit absolument pas comment faire.

    Merci d'avance à tous

  2. #2
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    il y a un truc qui me parait bizarre, ton preimer stdr.Read, va lire toutes tes lignes et donc créer un noeud de premier niveau pour chaque salarié et non pour chaque entreprise et ensuite y mettre tous les salarié dans le noeud de second niveau c'est étrange qd même. exemple l'entreprise x a n salarié donc n noeud premier niveau et dans chaque noeud il y aura n noeuds second niveaux. Est-ce clair ?

    Tu devrais utiliser un DataSet plutôt.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 26
    Par défaut
    Citation Envoyé par gueulederack Voir le message
    il y a un truc qui me parait bizarre, ton preimer stdr.Read, va lire toutes tes lignes et donc créer un noeud de premier niveau pour chaque salarié et non pour chaque entreprise et ensuite y mettre tous les salarié dans le noeud de second niveau c'est étrange qd même. exemple l'entreprise x a n salarié donc n noeud premier niveau et dans chaque noeud il y aura n noeuds second niveaux. Est-ce clair ?

    Tu devrais utiliser un DataSet plutôt.
    Oui c'est ça, en gros je voudrais obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Entreprise 1
    |       Employé 1
    |       Employé 2
    |       Employé 3
    Entreprise 2
    |       Employé 1
    Entreprise 3
    |       Employé 1
    |       Employé 2
    Je fait donc une première boucle pour les sociétés et une secondes à l'intérieur de la première pour les employés..

    Et donc, quelle différence entre mon stdr.Read et un DataSet?

  4. #4
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    c'est bizarre ce que tu essayes de faire, tu es sûr que tu t'es pas trompé dans ton exemple ? 2 fois entreprise 2 mais qu'une fois entreprise 1, je comprend pas. Pour le Dataset, ça ne regarde que moi mais je préfère manipuler un dataset, je m'y retrouve mieux, surtout en debogage

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 26
    Par défaut
    Oups, corrigé
    Mais dans mon code, qu'est ce qui ne vas pas?

  6. #6
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    Et bien dans ta 1ère boucle tu parcours deja toute ta table, il faut que tu rajoute une condition a ton Do while du genre Do While stdr.Read() && machin = false

    avec machin qui se met a true qd ton noeud avec la raison sociale existe deja, pazrceque la tu créés un noeud a chaque fois que tu a une ligne dansd ta table. la 2eme boucle à l'interieur de la premiere me semble bonne par contre

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/12/2012, 20h18
  2. treeview remplissage à partir de base sql server
    Par pams37 dans le forum VB.NET
    Réponses: 3
    Dernier message: 28/04/2011, 14h12
  3. Pb migration Access / SQL server
    Par yoyo dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 25/04/2005, 10h39
  4. Backup BD SQL Server
    Par Ethmane dans le forum Administration
    Réponses: 3
    Dernier message: 07/06/2002, 00h42

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