チュートリアル: Windows フォーム アプリケーションでのルックアップ テーブルの作成
ルックアップ テーブルは、あるテーブルの外部キー フィールドの値に基づいて、別のテーブルの情報を表示する場合に使用します。 たとえば、販売データベースの Orders テーブルであれば、次のように使用されます。 Orders テーブルの各レコードには、注文した顧客を表す CustomerID が含まれます。 CustomerID は、Customers テーブル内の顧客レコードを指す外部キーです。 Orders テーブルの Orders 一覧を表示する場合に、CustomerID ではなく、実際の顧客名を表示できます。 顧客名は Customers テーブルに含まれており、表示するデータは Orders テーブルに含まれているため、Orders レコードの CustomerID の値を使用してリレーションシップをたどり、わかりやすいデータである顧客名を返すルックアップ テーブルを作成する必要があります。 この概念をルックアップ テーブルと呼びます。
このチュートリアルでは、以下のタスクを行います。
新しい Windows アプリケーション プロジェクトを作成します。
データ ソース構成ウィザードを使用して、データセットを作成して構成します。
[データ ソース] ウィンドウから項目をドラッグしたときにフォーム上に作成するコントロールを選択します。 詳細については、「方法 : [データ ソース] ウィンドウからドラッグしたときに作成されるコントロールを設定する」を参照してください。
[データ ソース] ウィンドウからフォームに項目をドラッグして、データ バインド コントロールを作成します。
外部キーのリレーションによってバインドされたコントロールに関連するテーブルをドロップして、ルックアップ テーブルを設定します。
必須コンポーネント
このチュートリアルを完了するための要件は次のとおりです。
- Northwind サンプル データベースにアクセスします。 詳細については、「方法 : サンプル データベースをインストールする」を参照してください。
新しい Windows アプリケーションの作成
新しい Windows アプリケーション プロジェクトを作成するには
[ファイル] メニューで新しいプロジェクトを作成します。
プロジェクトに「LookupTableWalkthrough」という名前を付けます。
[Windows アプリケーション] をクリックし、[OK] をクリックします。 詳細については、「Windows ベースのアプリケーションの作成」を参照してください。
LookupTableWalkthrough プロジェクトが作成されてソリューション エクスプローラーに追加されます。
新しいデータ ソースの作成
データ ソースを作成するには
[データ] メニューの [データ ソースの表示] をクリックします。
[データ ソース] ウィンドウで、[新しいデータ ソースの追加] をクリックしてデータ ソース構成ウィザードを起動します。
[データソースの種類を選択] ページで、[データベース] をクリックし、[次へ] をクリックします。
[データ接続の選択] ページで、次のいずれかの操作を行います。
Northwind サンプル データベースへのデータ接続がドロップダウン リストに表示されている場合は選択します。
または
[新しい接続] を選択して [接続の追加] または [接続の変更] ダイアログ ボックスを表示します。 詳細については、「[接続の追加] ダイアログ ボックスと [接続の変更] ダイアログ ボックス (一般)」を参照してください。
データベースにパスワードが必要な場合は、該当するオプションを選択して重要情報を含め、[次へ] をクリックします。
[アプリケーション構成ファイルに接続文字列を保存] ページで、[次へ] をクリックします。
[データベース オブジェクトの選択] ページの [テーブル] ノードを展開します。
Customers テーブルと Orders テーブルを選択し、[完了] をクリックします。
プロジェクトに NorthwindDataSet が追加され、[データ ソース] ウィンドウに 2 つのテーブルが表示されます。
フォーム上のデータ バインド コントロールの作成
フォームにデータ バインド コントロールを作成するには
[データ ソース] ウィンドウの [Customers] ノードを展開します。
[Orders] ノードのコントロールの一覧の [詳細] をクリックして、関連する Orders テーブルのドロップ タイプを [詳細] に変更します。 詳細については、「方法 : [データ ソース] ウィンドウからドラッグしたときに作成されるコントロールを設定する」を参照してください。
関連する [Orders] ノードを展開し、[CustomerID] ノードのコントロールの一覧の [ComboBox] を選択して、[CustomerID] 列のドロップ タイプをコンボ ボックスに変更します。
[データ ソース] ウィンドウから Form1 に [Orders] ノードをドラッグします。
説明のラベルが付いたデータ バインド コントロールとレコード間を移動するためのツール ストリップ (BindingNavigator) がフォームに表示されます。 NorthwindDataSet、CustomersTableAdapter、BindingSource、および BindingNavigator がコンポーネント トレイに表示されます。
ルックアップ テーブルの作成
CustomerID コンボ ボックスのプロパティを設定して、ルックアップ テーブルを作成します。
フォーム上にルックアップ テーブルの機能を作成するには
[データ ソース] ウィンドウから Form1 の [CustomerID] ボックスに、メインの Customers ノードを直接ドラッグします。
注意
次のテーブルは、参照専用です。前述の手順のドラッグ アンド ドロップ操作によって、プロパティが自動的に設定されています。 デザイナーでは、下記の「設定の説明」どおりにプロパティが設定されます。 ルックアップ テーブルを正しく機能させるには、テーブルの構造に従ってルックアップ テーブルのプロパティを調整しなければならない場合があります。
プロパティ
設定の説明
DataSource
Visual Studio は、このプロパティをコントロールにドラッグしたテーブルに対して作成された BindingSource に設定します (コントロールの作成時に作成された BindingSource とは異なります)。
調整する必要がある場合は、このプロパティを、表示する列を含むテーブルの BindingSource に設定します。 (このチュートリアルでは CustomersBindingSource)。
DisplayMember
Visual Studio は、このプロパティをコントロールにドラッグするテーブルの主キーの後で、文字列データ型を含む最初の列に設定します。
調整する必要がある場合は、このプロパティを、表示する列の名前に設定します。
ValueMember
Visual Studio は、このプロパティを主キーに参加している最初の列、またはキーが定義されていない場合は、テーブルの最初の列に設定します。
調整する必要がある場合は、このプロパティを、表示する列を含むテーブルの主キーに設定します。
SelectedValue
Visual Studio は、このプロパティを [データ ソース] ウィンドウからドラッグした元の列に設定します。
調整する必要がある場合は、このプロパティを関連付けられたテーブルの外部キー列に設定します。 (このチュートリアルでは Orders テーブルの CustomerID)。
アプリケーションの実行
アプリケーションを実行するには
F5 キーを押します。
注文間を移動し、各注文について Customers テーブルの CompanyName 列が Orders テーブルの CustomerID 列の代わりに [CustomerID] ボックスに表示されることを確認します。
次の手順
アプリケーションの要件に応じて、データをバインドしたフォームの作成後に追加の操作を実行できます。 このチュートリアルで行うことができる拡張には次のものがあります。
フォームに検索機能を追加できます。 詳細については、「方法: パラメーター クエリを Windows フォーム アプリケーションに追加する」を参照してください。
データベースに更新を送信する機能を追加します。 詳細については、「チュートリアル : データベースへのデータの保存 (単一テーブル)」を参照してください。
[データ ソース] ウィンドウの [ウィザードで DataSet を構成] をクリックして、Orders テーブルをデータセットに追加します。 これで、Orders ノード (Customers テーブルの Fax 列の下にある) をフォームにドラッグすると、関連するデータを表示するコントロールを追加できます。 詳細については、「方法: 関連するデータを Windows フォーム アプリケーションに表示する」を参照してください。
参照
概念
Visual Studio でのデータへの Windows フォーム コントロールのバインド
Visual Studio でのデータへのコントロールのバインド