方法 : Windows フォーム BindingSource コンポーネントを使用してルックアップ テーブルを作成する
ルックアップ テーブルは、関連するテーブル内のレコードのデータを表示する列を持つ、データ テーブルです。以下の手順では、ComboBox コントロールを使用して、親テーブルから子テーブルへの外部キー リレーションシップを持つフィールドを表示します。
これら 2 つのテーブルとこのリレーションシップをイメージするための一助として、親テーブルと子テーブルの例を次に示します。
CustomersTable (親テーブル)
CustomerID | CustomerName |
---|---|
712 |
Paul Koch |
713 |
Tamara Johnston |
OrdersTable (子テーブル)
OrderID | OrderDate | CustomerID |
---|---|---|
903 |
February 12, 2004 |
712 |
904 |
February 13, 2004 |
713 |
このシナリオでは、一方のテーブル (CustomersTable) に、表示および保存する実際の情報を格納します。ただし、領域を節約するために、このテーブルには、情報を明確化するデータが含まれていません。 もう一方のテーブル (OrdersTable) には、顧客 ID 番号に対応する発注日および発注 ID に関する表示関連情報のみが格納されます。顧客名の記述は含まれません。
ルックアップ テーブルを作成するには、次の 4 つの重要なプロパティを ComboBox コントロール (Windows フォーム) コントロールで設定します。
DataSource プロパティには、テーブルの名前が格納されます。
DisplayMember プロパティには、コントロール テキスト (顧客名) として表示する、テーブルのデータ列が格納されます。
ValueMember プロパティには、格納された情報 (親テーブル内の ID 番号) に関連付けられた、テーブルのデータ列が格納されます。
SelectedValue プロパティは、ValueMember に基づいて、子テーブルのルックアップ値を提供します。
以下の手順では、フォームをルックアップ テーブルとしてレイアウトし、フォームのコントロールにデータをバインドする方法を示します。この手順を完了するには、データ ソースと共に、前記のような外部キー リレーションシップを持つ、親テーブルと子テーブルから成るデータ ソースが必要です。
ユーザー インターフェイスを作成するには
ツールボックスから、フォームに ComboBox コントロールをドラッグします。
このコントロールは、親テーブルの列を表示します。
子テーブルの詳細情報を表示する他のコントロールをドラッグします。テーブル内のデータの形式によって、選択するコントロールが決まります。詳細については、「Windows フォーム コントロールの機能別一覧」を参照してください。
BindingNavigator コントロールをフォームにドラッグします。これで、子テーブル内のデータを移動できるようになります。
データに接続し、データをコントロールにバインドするには
ComboBox を選択し、スマート タスク グリフをクリックして、[スマート タスク] ダイアログ ボックスを表示します。
[データ バインド項目を使用する] を選択します。
[データ ソース] ボックスの横の矢印をクリックします。プロジェクトまたはフォームに対してデータ ソースが既に設定されている場合は、データ ソースが表示されますが、設定されていない場合は、次の手順を実行します (この例では、Northwind サンプル データベースの Customers テーブルと Orders テーブルを使用します。これらのテーブルについてはかっこ内で言及しています)。
[プロジェクト データ ソースの追加] をクリックしてデータに接続し、データ ソースを作成します。
データ ソース構成ウィザードの [ようこそ] ページで、[次へ] をクリックします。
[データ ソースの種類を選択] ページで、[データベース] をクリックします。
[データ接続の選択] ページの利用可能な接続の一覧からデータ接続を選択します。目的のデータ接続を選択できない場合は、[新しい接続] を選択して新しいデータ接続を作成します。詳細については、「[接続の追加] ダイアログ ボックスと [接続の変更] ダイアログ ボックス (一般)」を参照してください。
[次の名前で接続を保存する] をオンにして、接続文字列をアプリケーション構成ファイルに保存します。
アプリケーションで使用するデータベース オブジェクトを選択します。この場合、外部キー リレーションシップを持つ親テーブルと子テーブル (たとえば、Customers と Orders) を選択します。
必要に応じて、既定のデータセット名を変更します。
[完了] をクリックします。
[メンバの表示] ボックスで、コンボ ボックスに表示する列名 (たとえば、ContactName) を選択します。
[値メンバ] ボックスで、子テーブルでルックアップ操作を実行する列 (たとえば、CustomerID) を選択します。
[選択された値] ボックスで、[プロジェクト データ ソース] に移動し、親テーブルと子テーブルを含む、作成したばかりのデータセットに移動します。親テーブルの Value Member に対応する、子テーブルのプロパティ (たとえば、Orders.CustomerID) を選択します。適切な BindingSource、データ セット、およびテーブル アダプタ コンポーネントが作成され、フォームに追加されます。
BindingNavigator コントロールを子テーブルの BindingSource (たとえば、
OrdersBindingSource
) にバインドします。ComboBox コントロールおよび BindingNavigator コントロール以外のコントロールを、表示する、子テーブルの BindingSource (たとえば、
OrdersBindingSource
) の詳細フィールドにバインドします。
参照
関連項目
その他の技術情報
BindingSource コンポーネント
ComboBox コントロール (Windows フォーム)
Windows アプリケーションのフォームでのデータの表示