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 :

DatagridView affichant deux tables liées


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut DatagridView affichant deux tables liées
    Bonjour,

    Et oui, encore une question sur les DataGridView...

    Je dispose d'un DataSet qui contient deux DataTable reliées par une relation de cardinalité 0..1
    Autrement dit, une table parent a, soit zero, soit une occurrence de la table enfant.

    Je pensait qu'il n'y aurait pas trop de problèmes à afficher dans un seul DataGridView les enregistrements de la table parent avec les colonnes de la table enfant qui seraient renseignées si l'occurrence vaut 1, et qui seraient vides si l'occurrence vaut 0.

    Mais voilà...une recherche sur ce forum et ailleurs ne m'a pas permis de solutionner le problème.
    J'ai bien essayé de créer dynamiquement une relation entre mes deux tables et d'associer le DataMember de mon DataGrid avec cette relation (et le datasource au dataset au préalable) mais j'ai à ce moment là un message
    Child list for field <ma relation créée> cannot be created.
    Quelqu'un a t-il déjà été confronté à ce problème ?

    Merci par avance pour vos réponses.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Bouuuhhh...
    Personne n'a une idée à ce sujet ?
    Allez, aujourd'hui c'est la rentrée (même pour les pros de VB, y'a pas de raison...).
    Dans le cas où mon problème ne serait pas clair, voici un exemple concret :

    Un client de banque a forcément un compte courant et 0 ou 1 livret A (admettons qu'il ne puisse avoir qu'un seul compte courant...).
    On a deux datatable, une avec les clients et leur compte courant, une avec les livrets A des clients.
    Soit 4 clients, 2 avec livret A et deux sans.
    Je voudrais voir dans mon DataGridView les 4 lignes suivantes

    Client1Id - CompteCourant1 - LivretA1
    Client2Id - CompteCourant2 - LivretA2
    Client3Id - CompteCourant3 - <rien>
    Client4Id - CompteCourant4 - <rien>

  3. #3
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Pourquoi ne pas faire une seule requête avec une jointure.
    Un left join par exemple je crois que sa devrais résoudre ton problème
    select * from client C left join livret L
    on C.comptecourant = L.comptecourant
    @++
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Merci lilroma pour ta réponse.

    Elle n'est cependant pas applicable car j'ai oublié de préciser que le dataset est alimenté par un parsing d'un fichier XML et pas par requête SQL.

    Je n'utilise pas de base de données dans ce cas précis car le nombre d'occurrence/de lignes reste relativement faible.

    La littérature est assez contradictoire, je lis tout autant qu'on ne peut pas directement afficher deux datatable différentes dans un même datagridview, mais aussi qu'il suffirait de créer dynamiquement une relation et de l'affecter à la propriété DataTable (mais bien evidement, ça n'a pas marché quand j'ai voulu le faire...)

  5. #5
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut
    Une solution serais de ne pas utiliser le DataBinding (Le Dataset comme source de données du DataGridView). Tu pourrais par exemple charger ton fichier fichier Xml dans un XmlDocument, tu parcour le fichier et tu remplie chaque ligne de ton DataGridView a la main.

    @++
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    299
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 299
    Par défaut
    Bravo à toi pour essayer d'apporter des réponses à ce problème épineux.

    Helas, mille fois helas...

    Mon Datagridview a une partie en édition (et pas simplement en visualisation). Évidement, ce ne sont pas les identifiants mais quelques champs annexes (du style l'adresse du client).

    Ca me semblerait lourd de mettre à jour le XML document dans l'autre sens et surtout, je refuse de croire qu'il n'y ait techniquement pas de solutions de type binding sur ce problème (sinon, Bill, faudrait songer à bouger le c.l de tes équipes ! )

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

Discussions similaires

  1. [MySQL] Insertion dans deux tables liées
    Par franxi dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/06/2008, 21h22
  2. DataGridView lié à deux tables
    Par the_red_skin dans le forum Windows Forms
    Réponses: 17
    Dernier message: 18/04/2008, 14h54
  3. MAJ afficher deux table dans un datagrid
    Par amelhajer dans le forum VB.NET
    Réponses: 1
    Dernier message: 09/04/2007, 07h36
  4. Incrementation automatique de deux tables liées
    Par fsautejeau dans le forum Access
    Réponses: 8
    Dernier message: 04/07/2006, 12h18
  5. Formulaire affichant deux tables liées à une troisième
    Par Mimi-des-îles dans le forum Access
    Réponses: 1
    Dernier message: 23/02/2006, 13h47

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