方法 : 関連する DataTable のレコードにアクセスする
更新 : 2007 年 11 月
データセット内のテーブル間に関連がある場合、DataRelation オブジェクトを使用すると、別のテーブル内の関連するレコードを利用できるようになります。たとえば、Customers テーブルと Orders テーブルが含まれるデータセットを利用可能にできます。
親テーブルの DataRow の GetChildRows メソッドを呼び出すことにより、DataRelation オブジェクトを使って関連するレコードを見つけることができます。GetChildRows メソッドは、関連する子レコードの配列を返します。または、子テーブルの DataRow の GetParentRow メソッドを呼び出して、親テーブルの単一の DataRow を取得できます。
このヘルプ トピックでは、型指定されたデータセットを使用する例について説明します。型指定されていないデータセット内のリレーションシップ間を移動する方法については、「DataRelation の移動 (ADO.NET)」を参照してください。
メモ : |
---|
Windows フォーム アプリケーションを操作し、データ バインディング機能を使ってデータを表示している場合は、アプリケーションにとって十分な機能がデザイナ生成フォームに揃っています。詳細については、「Windows アプリケーションのフォームでのデータの表示」の各トピック、特に「方法 : 関連するデータを Windows アプリケーションに表示する」および「チュートリアル : Windows アプリケーションのフォームでの関連データの表示」を参照してください。 |
次のコード例は、型指定されたデータセット内のリレーションシップ間を移動する方法を示しています。型指定された DataRow (NorthwindDataSet.OrdersRow) および生成された FindByPrimaryKey (FindByCustomerID) メソッドを使用して、目的の行を見つけ、関連するレコードを返します。この例を正常にコンパイルして実行するために必要なものを以下に示します。
Customers テーブルが含まれる、NorthwindDataSet という名前のデータセットのインスタンス。
Orders テーブル。
2 つのテーブルに関連し、コードのスコープに含まれる FK_Orders_Customers という名前のリレーションシップ。
また、両方のテーブルでは、返されるレコードにデータが格納される必要があります。
関連レコードへのアクセス
選択した親レコードの子レコードを返すには
特定の Customers データ行の GetChildRows メソッドを呼び出し、Orders テーブルから行の配列を返します。
Dim customerID As String = "ALFKI" Dim orders() As NorthwindDataSet.OrdersRow orders = CType(NorthwindDataSet.Customers.FindByCustomerID(customerID). _ GetChildRows("FK_Orders_Customers"), NorthwindDataSet.OrdersRow()) MessageBox.Show(orders.Length.ToString())
string custID = "ALFKI"; NorthwindDataSet.OrdersRow[] orders; orders = (NorthwindDataSet.OrdersRow[])northwindDataSet.Customers. FindByCustomerID(custID).GetChildRows("FK_Orders_Customers"); MessageBox.Show(orders.Length.ToString());
選択した子レコードの親レコードを返すには
次のコードは、特定の Orders データ行の GetParentRow メソッドを呼び出し、Customers テーブルから 1 つの行を返します。
Dim orderID As Integer = 10707 Dim customer As NorthwindDataSet.CustomersRow customer = CType(NorthwindDataSet.Orders.FindByOrderID(orderID). _ GetParentRow("FK_Orders_Customers"), NorthwindDataSet.CustomersRow) MessageBox.Show(customer.CompanyName)
int orderID = 10707; NorthwindDataSet.CustomersRow customer; customer = (NorthwindDataSet.CustomersRow)northwindDataSet.Orders. FindByOrderID(orderID).GetParentRow("FK_Orders_Customers"); MessageBox.Show(customer.CompanyName);