Relations dans C# [Résolu]

Signaler
Messages postés
10
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2005
-
Messages postés
10
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2005
-
Bonjour tout le monde .

J'ai une base de données Access avec comme tables : Clients et Commandes.
J'ai aussi une relation ("ClientsCommandes") la table Clients étant la table parente et Commandes la table enfant.
Dans une ListBox1 j'ai une liste de N°client obtenue à partir de la table Commandes ( N°Client = clé étrangère de la table Clients).
Je voudrais à partir de cette liste obtenir les enregistrements parents ( Nom, prénom, adresse,... de la table Clients) pour les afficher dans une autre ListBox2.
Merci.

5 réponses

Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
1
Et bien, voilà ce que je te propose (étant donnée que la liste d'ID et les infos sont dans la même table):



string filtre "CodeRabais '1'";

string tri = "ComN°Client";

DataView dv = this.dataset1.Commandes.DefaultView;

dv.RowFilter = filtre;

dv.Sort = tri;

lstClient.DataSource = dv

lstClient.DisplayMember = "ComN°Client"



Ainsi, chaque élément de la listBox est en réalité un DataRowView.
Lorsque tu cliques sur un élément de la liste, tu peux faire :

DataRowView drv = ((DataRowView)(lstClient.SelectItem))

MessageBox.Show(drv("nom"))



De même, si tu recherche les commandes du client, rien de plus simple.
A l'aide du DataRowView drv, tu fais
drv.Row.GetChildsRows("ClientsCommandes") et tableau de DataRow
correspondant aux commandes du client.



Là, ça doit être un peu plus simple que recherche un ID.


Chris


N'oubliez pas de cloturer votre post.
Messages postés
318
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
30 décembre 2005
1
Bonjour,



Il faut retrouver le DataRow selectionné au niveau de la listbox1 et
utiliser la méthode GetChildRows() pour obtenir les datarow enfants.



Chris

N'oubliez pas de cloturer votre post.
Messages postés
10
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2005

En fait voilà plutôt ce que je voudrais faire :

Contenu de la table Clients : N°Client(clé primaire), nom, prénom,adresse.
Contenu de la table Commandes : N°Commandes, dates, comN°Client(Clé étrangère de la table Clients),Code Rabais.
Avec une relation ("ClientsCommandes").

Je place ce code dans un événement click d'un bouton :


string filtre "CodeRabais '1'";
string tri = "ComN°Client";
DataRow [] dr = this.dataset1.Commandes.Select ( filtre, tri, DataViewRowState.CurrentRows);
for (int i=0; i<dr.Length; i++)
{
lstClients.Items.Add (dr[i]["ComN°Client"].ToString());
}

Donc je filtre les N° de clients de la table Commandes sur les rabais et j'affiche dans ma listebox (lstClients) les N° de clients de la table Commandes.

Ce que je voudrais c'est d'après ces numéros de clients pouvoir obtenir les noms, prénoms de ces clients (qui se trouvent dans la table Clients) et les afficher dans une autre listeBox.

Je ne sais pas si j'ai été clair ? En tout cas mille mercis....
Messages postés
10
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2005

En fait voilà plutôt ce que je voudrais faire :

Contenu de la table Clients : N°Client(clé primaire), nom, prénom,adresse.
Contenu de la table Commandes : N°Commandes, dates, comN°Client(Clé étrangère de la table Clients),Code Rabais.
Avec une relation ("ClientsCommandes").

Je place ce code dans un événement click d'un bouton :


string filtre "CodeRabais '1'";
string tri = "ComN°Client";
DataRow [] dr = this.dataset1.Commandes.Select ( filtre, tri, DataViewRowState.CurrentRows);
for (int i=0; i<dr.Length; i++)
{
lstClients.Items.Add (dr[i]["ComN°Client"].ToString());
}

Donc je filtre les N° de clients de la table Commandes sur les rabais et j'affiche dans ma listebox (lstClients) les N° de clients de la table Commandes.
Ce que je voudrais c'est d'après ces numéros de clients pouvoir obtenir les noms, prénoms de ces clients (qui se trouvent dans la table Clients) et les afficher dans une autre listeBox.

Je ne sais pas si j'ai été clair ? En tout cas mille mercis....
Messages postés
10
Date d'inscription
jeudi 27 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2005

Yes yes yes . c'est tout bon! Merci