Relations dans C#

Résolu
reythierry Messages postés 10 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 29 juillet 2005 - 27 juil. 2005 à 11:28
reythierry Messages postés 10 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 29 juillet 2005 - 28 juil. 2005 à 09:09
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

cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
28 juil. 2005 à 08:42
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.
3
cs_69chris Messages postés 318 Date d'inscription jeudi 30 janvier 2003 Statut Membre Dernière intervention 30 décembre 2005 1
27 juil. 2005 à 11:46
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.
0
reythierry Messages postés 10 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 29 juillet 2005
27 juil. 2005 à 20:45
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....
0
reythierry Messages postés 10 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 29 juillet 2005
27 juil. 2005 à 20:46
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....
0

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

Posez votre question
reythierry Messages postés 10 Date d'inscription jeudi 27 janvier 2005 Statut Membre Dernière intervention 29 juillet 2005
28 juil. 2005 à 09:09
Yes yes yes . c'est tout bon! Merci
0
Rejoignez-nous