Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : relation [ Base de données / ADO.NET ] (laurent180)

mardi 5 février 2008 à 15:44:40 | relation

laurent180

Bonjour,

J'aimerai savoir si qq a un exemple. Je n'arrive pas a afficher une relation de table.
j'ai ma 1 table "client" et ma 2 table "facture"
et j'aimerai lorsque je selectionne un client avoir directement la liste des factures qui si rapporte.
je travail en mode deconnecté.
j'arrive a affiché le client mais pas les facture.
Si qq a un exemple je suis preneur.

Merci de votre aide.

laurent.

jeudi 7 février 2008 à 15:20:31 | Re : relation

imothepe_33

Si tu boss en mode déconnecté cela veut dire que tu utilise un Dataset. - Tout d'abord as tu établi la relation (client-facture) dans ton Dataset? - Si oui tu devrais pouvoir récupérer les factures "enfants" de ton client "parent" avec la fonction GetChild() (je ne suis pas très sûre de la syntaxe) dans une liste... Avec un Dataset fortement typé c'est encore plus simple. Pour plus de détailles fais un tour sur developpez.com dans la section dotNet et fais une recherche sur les tutoriels en rapport avec ADO. Net et C#. Simplement si tu as MSDN fais une recherche.

jeudi 7 février 2008 à 21:36:36 | Re : relation

bidou_01

Hello,

Tu peux aussi utiliser les DataRelations à la mano, entre tes DataTables ;)

Cordialement,

Bidou_01
 


[ Lien ]

vendredi 8 février 2008 à 09:57:25 | Re : relation

laurent180

Bonjour a tous,

Merci de votre aide.
Je travail bien avec un dataset et je fait bien une datarelation entre les datatables.

Mais j'aimerai lorsque j'affiche un client que j'ai en dessous toutes la factures qui s'y rapporte dans un datagriedview.
Mais le datagridview il m'affiche toute la table "facture" et pas juste les factures du clients selectionné.

Merci de votre aide
Lau.


vendredi 8 février 2008 à 10:59:48 | Re : relation

bidou_01

Hello,

L'erreur classique c'est de crée les relations, mais d'oublier de les ajouter au DataSet :

monDS.Relations.Add(madataRelation);

Sinon, comme ça je vois pas d'ou peut venir l'erreur, à priori les DataRelation devraient suffire...

Sinon tu as la solution de "facilité" en utilisant les BindingSource.

Ou alors binder ton deuxième DataGridView à une DataView ou tu changerais le RowFilter "à la mano" à chaque changement de client dans ton premier gridView :) (mais bof)

Cordialement,

Bidou_01
 


[ Lien ]

vendredi 8 février 2008 à 13:36:57 | Re : relation

laurent180

Bonjour,

et encore merci de votre aide.
Voila le code (en vb.net) je n'ai pas mon code en C# ici mais c le meme problème.

'definir 2 colonne pour mettre les 2 table en relation

Dim dccleprimaire As DataColumn

Dim dccleexterne As DataColumn

Dim dr As DataRelation

dccleprimaire = ObjetDataSet.Tables(

"client").Columns("id_nom")

dccleexterne = ObjetDataSet.Tables(

"facture").Columns("id_nom")

'etablir la relation

dr =

New DataRelation("dr1", dccleprimaire, dccleexterne)

'associer la relation au dataset

ObjetDataSet.Relations.Add(dr)

 

DataGridView1.DataSource = objetdataset

DataGridView1.DataMember = "facture"

vendredi 8 février 2008 à 19:34:53 | Re : relation

bidou_01

Hello,

aahhhhhhhhhh ! Après réfléxion et tests, j'ai trouvé ton erreur ;)

==> DataGridView1.DataMember = "facture"  //Faux !!

==> DataGridView1.DataMember = "client.dr1";

A priori ça devrait marcher.

Un petit exemple pour bien comprendre : j'utilise la base de données Northwind et je crée 2 relations :

==> entre Customers et Orders
==> entre Orders et OrderDetails

===========================================================================

//on cr,e notre factory et notre connexion

this.m_factory = DbProviderFactories.GetFactory("System.Data.SqlClient");

this.m_connection = this.m_factory.CreateConnection();

this.m_connection.ConnectionString = this.m_connectionString;

//instanciation du DataSet

this.m_ds = newDataSet("RelationCustOrders");

//cr,ation et param,trage du dataAdapter charg, de lister les clients

this.m_daCustomers = this.m_factory.CreateDataAdapter();

this.m_daCustomers.SelectCommand = this.m_factory.CreateCommand();

this.m_daCustomers.SelectCommand.CommandText = "SELECT * FROM Customers";

this.m_daCustomers.SelectCommand.Connection = this.m_connection;

this.m_daCustomers.TableMappings.Add("Table", "Customers");

this.m_daCustomers.Fill(this.m_ds);

//cr,ation et param,trage du dataAdapter charg, de lister les achats

this.m_daOrders = this.m_factory.CreateDataAdapter();

this.m_daOrders.SelectCommand = this.m_factory.CreateCommand();

this.m_daOrders.SelectCommand.CommandText = "SELECT * FROM Orders";

this.m_daOrders.SelectCommand.Connection = this.m_connection;

this.m_daOrders.TableMappings.Add("Table", "Orders");

this.m_daOrders.Fill(this.m_ds);

//cr,ation et param,trage du dataAdapter charg, de lister le d,tail des achats

this.m_daDetailsOrders = this.m_factory.CreateDataAdapter();

this.m_daDetailsOrders.SelectCommand = this.m_factory.CreateCommand();

this.m_daDetailsOrders.SelectCommand.CommandText = "SELECT * FROM [Order Details]";

this.m_daDetailsOrders.SelectCommand.Connection = this.m_connection;

this.m_daDetailsOrders.TableMappings.Add("Table", "OrderDetails");

this.m_daDetailsOrders.Fill(this.m_ds);

//on cr,e la relation entre les tables Orders et Customers

DataRelation l_relCustOrder;

DataColumn l_colMasterCust;

DataColumn l_colDetailCust;

l_colMasterCust =

this.m_ds.Tables["Customers"].Columns["CustomerID"];

l_colDetailCust =

this.m_ds.Tables["Orders"].Columns["CustomerID"];

l_relCustOrder =

newDataRelation("FK_Order_Reference_Customer", l_colMasterCust, l_colDetailCust);

this.m_ds.Relations.Add(l_relCustOrder);//ajout de la relation au dataset

//on cr,e la relation entre les tables Orders et Order Details

DataRelation l_relOrderDetail;

DataColumn l_colMasterOrder;

DataColumn l_colDetailOrder;

l_colMasterOrder =

this.m_ds.Tables["Orders"].Columns["OrderID"];

l_colDetailOrder =

this.m_ds.Tables["OrderDetails"].Columns["OrderID"];

l_relOrderDetail =

newDataRelation("FK_OrderDetail_Reference_Order", l_colMasterOrder, l_colDetailOrder);

this.m_ds.Relations.Add(l_relOrderDetail);//ajout de la relation au dataset

//binding du dataGrid affichant les clients au dataset

dataGridView_customers.DataSource =

this.m_ds;

dataGridView_customers.DataMember =

"Customers";

//binding du dataGrid affichant les achats au dataset

dataGridView_orders.DataSource =

this.m_ds;

dataGridView_orders.DataMember =

"Customers.FK_Order_Reference_Customer";

//binding du dataGrid affichant le d,tail des achats au dataset

dataGridView_detailsOrders.DataSource =

this.m_ds;

dataGridView_detailsOrders.DataMember =

"Customers.FK_Order_Reference_Customer.FK_OrderDetail_Reference_Order";

=============================================================================

Désolé pour le bout de code un peu long :)

Cordialement,

Bidou_01
 


[ Lien ]

samedi 9 février 2008 à 14:59:46 | Re : relation

laurent180

Bonjour,

encore merci pour ton exemple.
je vais l'essayé.
je te tiens au courant.

merci
laurent180

lundi 11 février 2008 à 10:56:54 | Re : relation

imothepe_33

Avec cet exemple je pense que tu pourras t'en sortir...

lundi 11 février 2008 à 12:35:19 | Re : relation

imothepe_33

Vu que tu as déjà tes relations, tu peux aussi utiliser la fonction GetChildRows pour récupérer les enregistrements enfants : dr = New DataRelation("dr1", dccleprimaire, dccleexterne) 'associer la relation au dataset ObjetDataSet.Relations.Add(dr) //Je vais y aller en C# DataRow rowClient = ObjetDataSet.Tables["client"].Find("IdDuClient"); //une fois la ligne maître récupérée, tu fais DataRow[] rowsFacture = rowClient.GetChildRows(dr); //ton objet rowsFacture contient maintenant les facures associées à rowClient. Pour plus de détails suit ce lien http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpguide/html/cpconnavigatingrelationshipbetweentwotables.asp


1 2

Cette discussion est classé dans : arrive, table, client, exemple, relation


Répondre à ce message

Sujets en rapport avec ce message

description du champ, table access [ par fulljuju ] Bonjour à tous !J'ai une chtite question !Je me connecte à une base access en c# et arrive brillament à récupérer les informations de cette base. J'ar gerer les donnes dans le combobox avec dataset relation [ par sadsafa ] sadsafa une base former de deux tables ont une relation 1-ndans un table il ya un cle etranger je veux afficher dans le combobox en naviguant le libel les pointeurs en csharp [ par stysty ] Bonjourje sais que les pointeurs sont discret sur csharp mais j'en ai besoin et je n' y arrive pas tropje sais qu il faut utiliser unsafe j'arrive a f Relation base access [ par preti ] Bonjour,je développe un outil SGBD, j'aurai voulu savoir si il était possible de connaître les relations d'une table vers d'autres tout en ne connaîss Relations Access [ par reythierry ] Bonjour,Voici mon problème :J'ai une Base Access avec ça:Contenu de la table Clients : N°Client(clé primaire), nom, prénom,adresse.Contenu de la table [C#] dataset typés [ par philo71 ] Bonjour, Je développe un appli en C# 2003 avec SQL serveur 2000.je cherche des infos sur les datasets typés, j'ai quelques questions a vous poser. Je Affichage d'une table en mode "Freeform" [ par fdouieb ] Bonjour, Je possède une base de donnée client. Le nombre de champs dans cette table est énorme (> 50). Pour l'affichage de la liste de mes clients j'u insert et objet [ par babe59 ] Bonjour,Hypothèse :    - une table TBL_CLIENT : données es clients    - un objet "Client" qui permet (entre autre) de géré un client. Cet objet contie client IRC [ par Shogo6 ] Bonjour!Je suis actuellement en train de faire un client IRC. Donc jusqu'ici je n'avais aucun problème : j'ai un tcplistener qui ecoute mon serveur, u Objet SMO [ par tibo76530 ] bonjour! je viens poser une question surement bateau.j'ai récupérer un objet table contenant la table qui m'intéresse grace à SMO .Mais pour l'instant


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,092 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.