方法: Windows フォーム BindingSource コンポーネントを使用してルックアップ テーブルを作成するHow to: Create a Lookup Table with the Windows Forms BindingSource Component

ルックアップ テーブルは、関連するテーブル内のレコードのデータを表示する列を持つ、データ テーブルです。A lookup table is a table of data that has a column that displays data from records in a related table. 以下の手順では、ComboBox コントロールを使用して、親テーブルから子テーブルへの外部キー リレーションシップを持つフィールドを表示します。In the following procedures, a ComboBox control is used to display the field with the foreign-key relationship from the parent to the child table.

これらの 2 つのテーブルとこの関係をわかりやすく視覚化するために、親テーブルと子テーブルの例を次に示します。To help visualize these two tables and this relationship, here is an example of a parent and child table:

CustomersTable (親テーブル)CustomersTable (parent table)

CustomerIDCustomerID CustomerNameCustomerName
712712 Paul KochPaul Koch
713713 Tamara JohnstonTamara Johnston

OrdersTable (子テーブル)OrdersTable (child table)

OrderIDOrderID OrderDateOrderDate CustomerIDCustomerID
903903 February 12, 2004February 12, 2004 712712
904904 February 13, 2004February 13, 2004 713713

このシナリオでは、一方のテーブル (CustomersTable) に、表示および保存する実際の情報を格納します。In this scenario, one table, CustomersTable, stores the actual information you want to display and save. ただし領域を節約するために、このテーブルには情報を明確化するデータは含まれていません。But to save space, the table leaves out data that adds clarity. もう一方のテーブル (OrdersTable) には、どの顧客 ID 番号がどの発注日および発注 ID に相当するか、について表示関連の情報のみが格納されます。The other table, OrdersTable, contains only appearance-related information about which customer ID number is equivalent to which order date and order ID. 顧客名の記述は含まれません。There is no mention of the customers' names.

ルックアップ テーブルを作成するには、ComboBox コントロールで次の 4 つの重要なプロパティを設定します。Four important properties are set on the ComboBox Control control to create the lookup table.

  • DataSource プロパティには、テーブルの名前が格納されます。The DataSource property contains the name of the table.

  • DisplayMember プロパティには、コントロール テキスト (顧客名) に対して表示する、テーブルのデータ列が格納されます。The DisplayMember property contains the data column of that table that you want to display for the control text (the customer's name).

  • ValueMember プロパティには、格納された情報 (親テーブルの ID 番号) を持つ、テーブルのデータ列が格納されます。The ValueMember property contains the data column of that table with the stored information (the ID number in the parent table).

  • SelectedValue プロパティは、ValueMember に基づいて子テーブルのルックアップ値を提供します。The SelectedValue property provides the lookup value for the child table, based on the ValueMember.

以下の手順では、フォームをルックアップ テーブルとしてレイアウトし、フォームのコントロールにデータをバインドする方法を示します。The procedures below show you how to lay out your form as a lookup table and bind data to the controls on it. この手順を完了するには、データ ソース、および前述の外部キー リレーションシップを持つ親テーブルと子テーブルから構成されるデータ ソースが必要です。To successfully complete the procedures, you must have a data source with parent and child tables that have a foreign-key relationship, as mentioned previously.

ユーザー インターフェイスを作成するにはTo create the user interface

  1. ツールボックス、ドラッグ、ComboBoxコントロールをフォームにします。From the ToolBox, drag a ComboBox control onto the form.

    このコントロールは、親テーブルの列を表示します。This control will display the column from parent table.

  2. 子テーブルの詳細を表示する他のコントロールをドラッグします。Drag other controls to display details from the child table. テーブル内のデータの形式によって、選択するコントロールが決まります。The format of the data in the table should determine which controls you choose. 詳細については、「Windows フォーム コントロールの機能別一覧」を参照してください。For more information, see Windows Forms Controls by Function.

  3. BindingNavigator コントロールをフォームにドラッグします。これにより、子テーブル内のデータを移動できるようになります。Drag a BindingNavigator control onto the form; this will allow you to navigate the data in the child table.

データに接続し、コントロールにバインドするにはTo connect to the data and bind it to controls

  1. ComboBox を選択し、スマート タスク グリフをクリックして [スマート タスク] ダイアログ ボックスを表示します。Select the ComboBox and click the Smart Task glyph to display the Smart Task dialog box.

  2. [データ バインド項目を使用する] を選択します。Select Use data bound items.

  3. [データ ソース] ドロップダウン ボックスの横の矢印をクリックします。Click the arrow next to the Data Source drop-down box. プロジェクトまたはフォームに対してデータ ソースがすでに構成されている場合はデータ ソースが表示されますが、設定されていない場合は、次の手順を実行します (この例では、Northwind サンプル データベースの Customers テーブルと Orders テーブルを使用します。これらのテーブルについては括弧の中で参照します)。If a data source has previously been configured for the project or form, it will appear; otherwise, complete the following steps (This example uses the Customers and Orders tables of the Northwind sample database and refers to them in parentheses).

    1. [プロジェクト データ ソースの追加] をクリックしてデータに接続し、データ ソースを作成します。Click Add Project Data Source to connect to data and create a data source.

    2. データ ソース構成ウィザードの開始ページで [次へ] をクリックします。On the Data Source Configuration Wizard welcome page, click Next.

    3. [データソースの種類を選択] ページで、[データベース] をクリックします。Select Database on the Choose a Data Source Type page.

    4. [データ接続の選択] ページの利用可能な接続の一覧から、データ接続を選択します。Select a data connection from the list of available connections on the Choose Your Data Connection page. 目的のデータ接続を選択できない場合は、[新しい接続] を選択して新しいデータ接続を作成します。If your desired data connection is not available, select New Connection to create a new data connection.

    5. [次の名前で接続を保存する] をオンにして、接続文字列をアプリケーション構成ファイルに保存します。Click Yes, save the connection to save the connection string in the application configuration file.

    6. アプリケーションで使用するデータベース オブジェクトを選択します。Select the database objects to bring into your application. この場合、外部キー リレーションシップを持つ親テーブルと子テーブル (Customers と Orders など) を選択します。In this case, select a parent table and child table (for example, Customers and Orders) with a foreign key relationship.

    7. 必要な場合は、既定のデータセット名を変更します。Replace the default dataset name if you want.

    8. [完了] をクリックします。Click Finish.

  4. [表示メンバー] ドロップダウン ボックスで、コンボ ボックスに表示する列名 (ContactName など) を選択します。In the Display Member drop-down box, select the column name (for example, ContactName) to be displayed in the combo box.

  5. [値メンバー] ドロップダウン ボックスで、子テーブルでルックアップ操作を実行する列 (CustomerID など) を選択します。In the Value Member drop-down box, select the column (for example, CustomerID) to perform the lookup operation in the child table.

  6. [選択された値] ドロップダウン ボックスで [プロジェクト データ ソース] に移動し、親テーブルと子テーブルを含む、作成したばかりのデータセットに移動します。In the Selected Value drop-down box, navigate to Project Data Sources and the dataset you just created that contains the parent and child tables. 親テーブルの Value Member に対応する、子テーブルのプロパティ (Orders.CustomerID など) を選択します。Select the same property of the child table that is the Value Member of the parent table (for example, Orders.CustomerID). 適切な BindingSource、データ セット、およびテーブル アダプタ コンポーネントが作成され、フォームに追加されます。The appropriate BindingSource , data set, and table adapter components will be created and added to the form.

  7. BindingNavigator コントロールを子テーブルの BindingSource (OrdersBindingSource など) にバインドします。Bind the BindingNavigator control to the BindingSource of the child table (for example, OrdersBindingSource).

  8. ComboBox および BindingNavigator コントロール以外のコントロールを、表示する子テーブルの BindingSource (OrdersBindingSource など) の詳細フィールドにバインドします。Bind the controls other than the ComboBox and BindingNavigator control to the details fields from the child table's BindingSource (for example, OrdersBindingSource) that you want to display.

関連項目See also