2010-01-02 3 views
0

J'ai un jeu de données dans lequel il y a 40 tables. Maintenant, je veux faire une relation entre ces tables et montrer des données importantes dans la grille. Comment puis-je faire cela?Comment faire une relation entre des tables qui sont dans le même jeu de données?

+0

Ashish, ("comment relier les tables dans un ensemble de données"). Vous obtiendrez de meilleurs résultats si vous supprimez la deuxième question beaucoup plus large et plus vague ("comment afficher ces données dans une grille"). –

Répondre

0

Avez-vous essayé quelque chose comme:

ds.Relations.Add("Products_Category", 
    ds.Tables("Categories").Columns("CategoryID"), 
    ds.Tables("Products").Columns("CategoryID")); 
5

Si vous créez un DataSet typé, il est plus facile de créer des relations dans le concepteur de jeux de données de Visual Studio. Faites un clic droit sur la table dans le concepteur, sélectionnez Ajouter-> Relation et spécifiez la relation.

Si vous devez spécifier la relation dans le code, vous pouvez le faire comme ceci:

dataSet.Relations.Add(dataSet.Tables["Customers"].Columns["customerId"], 
    dataSet.Tables["Orders"].Columns["customerId"]); 

Lire tous à ce sujet dans MSDN here.

+0

Mais j'ai récupéré toutes les tables de webservice et les lier dans l'ensemble de données. Maintenant, je veux faire une relation entre ces tables et montrer quelques données importantes dans une grille. Sil te plait aide moi. – Ashish

+0

Ma réponse décrit exactement comment faire cela. –

1

C'est un grand nombre de DataTables à avoir dans un DataSet.

La première chose que je considérerais serait de réduire le nombre de DataTables (et éliminer le besoin de Relations) en remplissant le DataTables avec des requêtes qui relient les tables de base de données. Par exemple, au lieu d'avoir un DataTable pour la catégorie de produit et un autre pour le détail du produit, il peut être possible de combiner les données des deux tables de base de données en une DataTable. De même, pour Customer, Customer Address et Customer Phone, récupérez toutes les données dans un DataTable en utilisant une requête qui fait un JOIN sur les trois tables de base de données.

Une fois que vous avez réduit le nombre de DataTables dans le DataSet, vous pouvez ajouter Relations entre DataTables si elles ont des colonnes correspondant (même si les colonnes ont des noms différents). Par exemple, il peut y avoir un commandes DataTable avec une colonne CustomerID qui correspond à la colonne ID dans les clients DataTable.

Voici le code pour ajouter un Relation au DataSet pour cette situation. Supposons que nous ayons un DataSet dst contenant deux DataTables clients et commandes.

DataColumn customerColumn, orderColumn; 
customerColumn = dst.Tables["Customers"].Columns["ID"]; 
orderColumn = dst.Tables["Orders"].Columns["CustomerID"]; 
DataRelation dr = new DataRelation("CustomerOrders", customerColumn, orderColumn); 
dst.Relations.Add(dr); 
vous avez posé une question très précise et responsable
1
ds.Relations.Add("Products_Category", 
    ds.Tables("Categories").Columns("CategoryID"), 
    ds.Tables("Products").Columns("CategoryID")); 
Questions connexes