Share via


方法 : 関連する DataTable のレコードにアクセスする

データセット内のテーブル間に関連がある場合、DataRelation オブジェクトを使用すると、別のテーブル内の関連するレコードを利用できるようになります。 たとえば、Customers テーブルと Orders テーブルが含まれるデータセットを利用可能にできます。

親テーブルの DataRowGetChildRows メソッドを呼び出すことにより、DataRelation オブジェクトを使って関連するレコードを見つけることができます。GetChildRows メソッドは、関連する子レコードの配列を返します。 または、子テーブルの DataRowGetParentRow メソッドを呼び出して、親テーブルの単一の DataRow を取得できます。

このヘルプ トピックでは、型指定されたデータセットを使用する例について説明します。 型指定されていないデータセット内のリレーションシップ間を移動する方法については、「DataRelation の移動」を参照してください。

注意

Windows フォーム アプリケーションを操作し、データ バインディング機能を使ってデータを表示している場合は、アプリケーションにとって十分な機能がデザイナー生成フォームに揃っています。詳細については、「Visual Studio でのデータへのコントロールのバインド」の各トピック、特に「方法: 関連するデータを 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); 
    

参照

概念

アプリケーションでデータを受け取る準備

アプリケーションへのデータのフェッチ

Visual Studio でのデータへのコントロールのバインド

アプリケーションでのデータ編集

データの検証

データの保存

その他の技術情報

データセットのリレーションシップ

Visual Studio のデータ アプリケーションの概要

Visual Studio でのデータへの接続