Pb liaison données avec datagridview

Résolu
f1isj Messages postés 6 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 25 novembre 2006 - 24 nov. 2006 à 16:23
f1isj Messages postés 6 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 25 novembre 2006 - 25 nov. 2006 à 18:26
Bonjour,

Debutant en ADO.net, j'ai un probleme avec un datagridview.

J'ai une base de données (access) avec 3 tables:
Dessin avec les champsdessinID, date, nom, form1ID, form2ID
Form avec les champs formID, NomForm, couleurID
Couleur avec les champs couleurID,CouleurNom

Ces tables sont en relation: Dessin avec Form et Form avec Couleur par les
ID donc 3 niveaux
Dessin
|
Form
|
Couleur

Je voudrais créer un datagridview affichant tous les champs, c'est à dire :
DessinID, date, form1NomForm, form1CouleurNom, form2NomForm,
form2CouleurNom.

Pas de probleme pour afficher dessinID, date, nom, nom des form 1 et 2
Par contre je ne vois pas comment afficher les couleurs.
Pour l'instant j'en suis là:
le DataGridView avec comme dataSource la table Dessin
1 colonne pour chaque champ désiré
date OK
Nom(dessin) OK
colonne form1NomForm: datasource=BindingSourceForm,
datapropertyname=form1Id, displaymember = nomForm, valuemember=form1ID
idem pour form2

Dans mon dataset, j'ai toutes les tables. Dans le datagrid, j'ai essayer de
creer une colonne combobox independante avec datasource= Couleur,
Valuemember= couleurID, displaymember=couleurnom
mais, impossible de pouvoir afficher le champ CouleurNom dans la propriete
DataPropertyName puisque le grid est lié à la table dessin et le champ
CouleurID n'est pas en lien direct avec la table dessin.
Au chargement du grid, les cellules correpondantes aux couleur sont vides.
Le combobox contient bien les couleurs quand on le deroule (2 clic
necessaire pourquoi ?) et la bonne couleur est selectionnée mais l'affichage
en non deroulé est vide. Par contre si je modifie la couleur, celle-ci reste
bien affichée

Comment recuperer le nom des couleurs et l'afficher dans le datagrid view?

Merci de vos reponse.
<!-- / message -->
Eric

5 réponses

Boudchiche Messages postés 59 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 25 novembre 2006
25 nov. 2006 à 14:30
dans la 2eme ligne de la requete ca n'apparais pas mais c couleurs.couleur
3
Boudchiche Messages postés 59 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 25 novembre 2006
24 nov. 2006 à 19:39
je ne comprend pas ce Que represente form2ID dans la table Dessin et s'est quoi ca form1NomForm, form1CouleurNom, form2NomForm,
form2CouleurNom.
Essaye de mieux explique ton code si tu veut qu'on t'aide
Ce que tu doit faire s'est remplir ton dataset par un requette qui rassemble tout les champs qui bien sur remplis une table 
Ou bien remplir directement un table par un dataadapter
et tu lie ta table au datagrid
0
f1isj Messages postés 6 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 25 novembre 2006
25 nov. 2006 à 00:09
Bonsoir,

Ce n'est pas du code mais l'explication de ma BDD.
Meilleure explication pour les champs (j'espere):


Table1: nom=Dessin, champs= ID(identificateur)+ date + nom + form1 (qui va contenir un FormID de la table Form) + form2, identique à form1
Table2: nom=Form, champs= ID (identificateur), Nom (de la forme), Couleur (qui contient un ID de la table couleur).
Table3: nom=Couleur, champs=ID(identificateur), NomCouleur

Les tables sont en relation par les ID, cad que j'ai dans la table couleur par exemple
1, vert
2,rouge

dans la table Form
1(ID de la forme) , carré (nom de la forme) , 1 (ID de la couleur) (donc un carré vert)
2, rond, 2  (ID de la couleur) (donc un rond rouge)
3, carré, 2 (ID de la couleur) (donc un carré rouge)

dans la table dessin
1, 15/12/2005, essai, 1 (la form1 est un carré vert), 3 (la form2 est un carré rouge)


Je voudrais donc un datagridview qui m'affiche:
1, 15/12/2005, essai, carré, vert, carré , rouge

c'est a dire: ID du dessin, date, nom, nom de la form 1, couleur de la form1, nom de la forme2, couleur de la forme2
Mais apres moult recherches, c'est difficile à part avec une requete specifique et un nouveau dataset.
On fait facilement
ID, date, nom, nom form1, nom Form2 mais pour les couleurs c'est + dur car 1 niveau de plus dans la hierarchie des tables.
Merci quand meme de la reponse.

Eric
0
Boudchiche Messages postés 59 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 25 novembre 2006
25 nov. 2006 à 14:28
Essaye ca et je crois que ca vas marcher si j'ai bien compris

Dim strsql as string
strsql="SELECT Dessin.ID_Dessin,Dessin.Date_Dessin,Dessin.Nom,Form1.Nom,Form2.Nom,Couleurs.Couleur FROM Dessin,Form1,Form2,Couleurs WHERE Dessin.ID_Dessin=From1.ID_Dessin AND Dessin.ID_Dessin=Form2.ID_Dessin AND Dessin.ID_Form1=Form1.ID_Form1 AND Dessin.ID_Form2=Form2.ID_Form2 AND Form1.ID_Couleur=Couleurs.ID_Couleur AND Form2.ID_Couleur=Couleurs.ID_Couleur"

Dim  TonAdapter as SqlDataAdapter=new sqlDataAdapter(StrSql,TaConnection)
Dim TaTable as new DataTable
TonAdapter.Fille(TaTable)
TonDataGridView.DataSource=TaTable
A plus
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
f1isj Messages postés 6 Date d'inscription dimanche 29 décembre 2002 Statut Membre Dernière intervention 25 novembre 2006
25 nov. 2006 à 18:26
Bonsoir,

Merci pour la reponse, c'est ce que j'ai fait.
Je pensais au depart que a partir du dataset (qui si j'ai bien compris conteient aussi les liaisons) comprenant toutes les tables de la base, on pouvait reconstruire n'imorte quelle donnée avec les liaisons dans le datagridview. Mais appremment c'est pas faisable. Ca peche au niveau du databinding du datagridview, on ne peut descendre que d'un niveau dans la hierarchie des tables.

Merci

eric

Eric
0
Rejoignez-nous