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

Windows Forms Discussion :

DataGridView lié à deux tables


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut DataGridView lié à deux tables
    Bonjour,

    je me permet de vous demander comment faire pour avoir une vue pareille :



    Ici, vous voyez Access 2007. Mais j'aimerais avoir la même vision sur mon DataGridView. Je bosse sous Visual Studio 2008 et Framework 2.0 (obligé).

    Merci d'avance,


  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Il te faut un dataset qui contient deux tables qui sont liés par une relation.

    Après, tu attribues ton dataset à la propriété datasource de ton datagridview et le reste se fait tout seul.

    Griftou.
    Kropernic

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Merci, mais peux-tu être un peu plus clair stpl. ? Voici 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
     
            Dim lien As DataSet = New DataSet()
            Dim t1 As New FactDivDataSet.FacturesDataTable()
            Dim t2 As New FactDivDataSet.FactureLignesDataTable()
            Dim a1 As New FactDivDataSetTableAdapters.FacturesTableAdapter()
            Dim a2 As New FactDivDataSetTableAdapters.FactureLignesTableAdapter()
            a1.Fill(t1)
            a2.Fill(t2)
            lien.Tables.Add(t1)
            lien.Tables.Add(t2)
            lien.Relations.Add(New DataRelation("Facture", t1.id_factureColumn, t2.ref_id_factureColumn))
            Me.DataGridView3.DataSource = lien

  4. #4
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    De tête comme ça, ça m'a l'air bon. Cela ne fonctionne pas ?

    Griftou.
    Kropernic

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    Je crois que la discussion que j'avais lancer peut éventuellement t'intéresser,
    c'est ici


    ( les logiciels que je cite (intégrable a visual studio )sont capable de faire ce genre d'affichage, par contre j'ai un doute concernant visual studio 2008)

  6. #6
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par griftou Voir le message
    De tête comme ça, ça m'a l'air bon. Cela ne fonctionne pas ?

    Griftou.
    Et non, il n'affiche rien dans mon DataGridView...

    Que faire ?

    Citation Envoyé par wishmasteer Voir le message
    Je crois que la discussion que j'avais lancer peut éventuellement t'intéresser,
    c'est ici


    ( les logiciels que je cite (intégrable a visual studio )sont capable de faire ce genre d'affichage, par contre j'ai un doute concernant visual studio 2008)
    Peux-tu m'en dire un peu plus ?! Toi qui as certainement utilisé cette solution.

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bon, j'vais checker ton code. Perso je fais pareil mais j'suis encore avec VS2003 et donc des datagrid et pas datagridview.

    Rien du tout ne s'affiche ? Pas même les en-têtes de colonnes ?

    Griftou.
    Kropernic

  8. #8
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par griftou Voir le message
    Bon, j'vais checker ton code. Perso je fais pareil mais j'suis encore avec VS2003 et donc des datagrid et pas datagridview.

    Rien du tout ne s'affiche ? Pas même les en-têtes de colonnes ?

    Griftou.
    Non, même pas mon bon. En parlant de DataGrid, j'ai trouvé ceci :

    MSDN

    Comment l'appliquer à un DataGridView ?

    C'est gentil...

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bin comme je t'ai dit dans mon premier message mais il faut faire le code derrière ^^.

    J'ai regardé mon code et j'me suis rendu compte qu'en fait je fais des trucs "bizarres" donc j'vais p-e pas montrer ça. Ce n'est pas un exemple à suivre je pense.

    Griftou.
    Kropernic

  10. #10
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 24
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par griftou Voir le message
    Bin comme je t'ai dit dans mon premier message mais il faut faire le code derrière ^^.

    J'ai regardé mon code et j'me suis rendu compte qu'en fait je fais des trucs "bizarres" donc j'vais p-e pas montrer ça. Ce n'est pas un exemple à suivre je pense.

    Griftou.
    Ok, merci.

    Quelqu'un a une idée pour les DataGridView et une vue hiérarchique ?

  11. #11
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Je remonte un peu cette dsicussion car je suis confrontée au même problème : un affichage hiérarchique !

    Je vais tenter le coup avec un DGV mais je vais essayer de faire la relation par le SQL genre requête INNER JOIN ou UNION !

    The_Red_Skin, si tu as avancé dans tes recherches, peux-tu m'en faire part ?


    Autre solution : faire un UserControl soi-même !


    Je tatonne aussi


    EDIT : quelques recherches plus tard !!! Il semble que le DGV n'est plus hiérarchique depuis le NET 2.0
    Lu ici : http://forums.microsoft.com/MSDN/Sho...70793&SiteID=1
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  12. #12
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Bon et bien puisqu'apparemment, même les modo bloquent sur ce truc, je vais quand même vous donner ce que j'ai fait.

    Voici le 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
    38
    39
    40
    41
    42
    43
     
        'déclaration des variables globales
        Dim dsTmp, ds As DataSet
        Dim tables, fields, order, criterias As New ArrayList
     
    '... un peu plus loin dans le load de la windowsform...
            'récupération des bons depuis les tables tbtype et tbref
            Dim table As DataTable
            tables.Clear()
            tables.Add("tbtype")
            dsTmp = frmBon.data.DoSelect(tables, Nothing, Nothing, False, Nothing, Nothing)
            If Not ds Is Nothing Then
                ds.Dispose()
            End If
            ds = New DataSet
            table = dsTmp.Tables(0).Copy
            dsTmp.Dispose()
            ds.Tables.Add(table)
            ds.Tables(0).TableName = "tbtype"
            table.Dispose()
     
            tables.Clear()
            tables.Add("tbref")
            dsTmp = frmBon.data.DoSelect(tables, Nothing, Nothing, False, Nothing, Nothing)
            table = dsTmp.Tables(0).Copy
            dsTmp.Dispose()
            ds.Tables.Add(table)
            ds.Tables(1).TableName = "tbref"
            table.Dispose()
     
            'création de la liaison entre les deux tables
            Dim parentCol, childCol As DataColumn
            parentCol = ds.Tables(0).Columns("prefixe")
            childCol = ds.Tables(1).Columns("prefixe")
            Dim rel As DataRelation
            rel = New DataRelation("type/ref", parentCol, childCol)
            ds.Relations.Add(rel)
            ds.DataSetName = "Liste des bons"
     
            'affichage de la liste dans le datagrid
            dgListe.DataSource = ds.Tables(0)
            'positionnement sur la table parente
            dgListe.DataMember = ""
    Le truc, c'est que je ne sais pas comment remplir deux tables différentes dans un dataset (ça doit être tout con mais comme c'est le seul endroit où j'en aurais l'utilité, j'me casse pas la tête dessus) donc je remplis un dataset nommé dsTmp avec le résultat d'une première requête. Je copy alors le résultat dans une table qui n'appartient à aucun dataset et j'ajoute finalement cette table dans un nouveau dataset nommé ds et je nomme la table avec le nom qui convient (ici "tbtype").

    Je refais la même chose avec une deuxième requête et il ne reste plus qu'à créer la liaison et à afficher le résultat.

    S'il y a des questions, je suis dispo.

    Griftou.
    Kropernic

  13. #13
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Tu utilises un DataGrid, pas un DGV ! (euh, c'est pas un reproche, juste une constatation )

    Si tu fais une requête SHAPE ou INNER JOIN dans ton SQL, ca te permettrait de faire la relation directement, non ?

    (pas encore eu le temps de bcp creuser le sujet mais je suis "dedans" )


    EDIT : sinon, il existe un DGV hiérarchique mais si l'essai est gratuit, pour distribuer, c'est payant (je sais pas combien)
    http://www.applicationaspect.com/Sit...FreeTrial.aspx
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  14. #14
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Je suis encore sous VS2003 donc les DGV, il connait pas

    Mais mon chef m'a annoncé qu'on aurait le 2005 mardi ! J'ai hâte, j'vais enfin avoir un peu de boulot avec toutes les migrations

    Sinon, c'est quoi une requête SHAPE ? (tutos, articles?)
    Et sinon, j'me débrouille en sql mais juste le strict nécessaire, j'm'emmêle vite les pinceaux avec les inner et outer joins.

    Griftou.
    Kropernic

  15. #15
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Voici un exemple dans "Recordset hiérarchique" :

    http://vb.developpez.com/bidou/recor...age=mefdonnees

    C'est un tuto de Bidou

    Evidemment, c'est du VB6 et là, le MSHFlexgrid était d'une simplicité formidable pour les recordset hiérarchiques ! Pourquoi on l'a plus ?
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    Je suis un peu en retard mais je répond a une question de "the_red_skin",
    Concernant les DGV avec une vue hiérarchique,apparemment c'est tellement la galère que pas grand monde ne trouve la solution.C'est pourquoi certaines boites sorte des dlls a intégrer a visual studio pour faire ce genre de chose.C'est super puissant et incroyablement bien fais !Avec ce genre de bibliotheque tu peux tout simplement TOUT faire avec des Datagridview ou autres TreeView...

    J'avais testé FlyGrid.Net mais pour des problèmes de bug je me suis rabattu sur une solution plus puissante: Xceed
    Version d'essai complète de 45 jours, après c'est bien sur payant...(il existe mal grès tout des choses permettant de ...)
    Je test actuellement sa pour un logiciel de mon entreprise, étant tout nouveau il n'existe aucun tutorial sur le net et personne non plus n' a encore donner son avis et son retour d'exp.

  17. #17
    Membre expert
    Avatar de khany
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 073
    Points : 3 890
    Points
    3 890
    Par défaut
    Bonjour et merci pour l'info !
    L'ennui, c'est le payant
    Puisque tu le testes, que dirais-tu de mettre ton retour d'expérience sous forme de tutoriel ?
    Je peux t'aider pour la marche à suivre et te faire publier sur développez.com

    A toi de voir !

    Personnellement, je pense que je vais m'orienter vers un UserControl "collant" à mon cas si le Datagrid ne peut pas suppléer au tout chouette MSHFlexgrid que nous avions dans VB6
    avant de poster FAQ VB - Page sources VB - Cours VB

    Mes tutoriels : VB - VB.NET et ASP.NET

    N'oubliez pas Merci !

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 38
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta proposition Khany, c'est vrai que cela peut être utile a surement quelques personnes
    En tout cas, pour le moment ce n'est pas encore au point vis a vis de la récupération des données( pour mon cas), je n'est pas encore réussi a créer un détail de datagridview dans un autre datagridview.Cela dans mon projet et même en partant d'un nouveau projet complet.

    Les possibilités sont immense, reste juste plus qu'a savoir les exploiter.

    Lorsque je me serais bien caler sur le sujet je te retiens volontiers au courant..
    Merci

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/03/2012, 10h31
  2. DatagridView affichant deux tables liées
    Par nikoko34 dans le forum VB.NET
    Réponses: 8
    Dernier message: 29/09/2009, 16h22
  3. comment lier deux tables?????
    Par baboune dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 16/03/2004, 14h45
  4. 2 Count() sur deux tables en jointures gauches
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2003, 16h53
  5. regrouper deux tables
    Par Shabata dans le forum Langage SQL
    Réponses: 4
    Dernier message: 19/05/2003, 15h02

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