ほとんどのデータベース システムでは、フィールドに格納できる値は 1 つだけです。 Access の場合、複数の値 (100 個まで) を格納するフィールドを作成できます。 たとえば、問題に関する作業を担当する従業員を追跡するとします。 1 人の従業員が複数の問題の責任者になることができ、それぞれの問題は何人かの従業員が担当することができるとします。 このようなデータ構造は、多対多リレーションシップと呼ばれます。 Access の複数値を持つフィールドは、[選択肢] 列を使用する SharePoint リストでの作業にも役立ちます。 複数値フィールドを使用するデータベースの例については、 Issue Tracking テンプレートを参照してください。
メモ Access には、テーブル内の一致するデータを検索するルックアップ フィールド (Full Name を検索する ID フィールドなど) と、プロパティで定義された有効な値を持つ 1 つの値のみを格納する値リスト フィールドなど、他の種類のリスト フィールドがあります。 詳細については、「ルックアップ フィールドを作成または削除する」と「値リスト フィールドを作成または削除する」を参照してください。
この記事の内容
- 複数値を持つフィールド とは
- 複数値を持つフィールドの作成
- 複数選択コンボ ボックス コントロールのサイズ変更
- 複数値を持つフィールドのプロパティの更新
- 複数値を持つフィールドの削除
- ルックアップ フィールドのプロパティ
複数値を持つフィールド とは
問題を従業員の誰かに割り当てようとする際に、その問題は複数の従業員に割り当てる必要があると判断したとします。 その場合、複数値を持つフィールドを作成することができ、従業員をリストから選択することが可能になります。
[複数選択コンボ ボックス] の矢印をクリックすると、選択内容を示すチェック ボックスが表示されます。
リストのアイテムをオンやオフにすることができ、[OK] をクリックすると選択内容が保存されます。 選択したアイテムは複数値フィールドに格納され、(既定では) コンマで区切られて表示されます。
複数値を持つフィールドの背景には、複数のアイテムを選択して格納する場合に、高度なデータベース デザインの作成を不要にし、そのようなシチュエーションのサポートを容易にするという目的があります。 Access はこの処理をバック グラウンドで行い、データを自動的に分離した後に再びまとめ、複数の値を 1 つのフィールドに表示します。 Access の複数値を持つフィールドは、多対多リレーションシップを表します。
大事なAccess データベースをSQL Serverに移行すると、Access の複数値フィールドは、区切られた値のセットを含む ntext フィールドとしてSQL Serverに変換されます。 SQL Server では多対多リレーションシップを表す複数値を持つデータ型はサポートされていないため、追加のデザインや変換作業が必要になる可能性があります。
複数値を持つフィールドの作成
テーブルを [デザイン ビュー] で開きます。
最初の空の行で [フィールド名] 列をクリックし、フィールドの名前を入力します。
その行の [データ型] 列をクリックし、矢印をクリックし、ドロップダウン リストから [ルックアップ ウィザード] を選択します。
メモ ルックアップ ウィザードでは、ウィザードで選択した内容に応じて、ルックアップ フィールド、値リスト フィールド、および複数値フィールドの 3 種類のリストが作成されます。ウィザードで、次の手順に正確に従います。
- 最初のページ で、[必要な値を入力します] を選択し、[ 次へ] をクリックします。
- 2 番目のページで、列を 1 つ選択したままにし、列見出しの下に 1 行に 1 つずつ複数の値を入力し、[次へ] をクリックします。
- 3 番目のページで、[このルックアップに複数の値を保存できるようにしますか?] の下で [複数の値を許可する] チェック ボックスをオンにし、[完了] をクリックします。
変更内容を保存します。
複数選択コンボ ボックス コントロールのサイズ変更
- [デザイン ビュー] または [レイアウト ビュー] でレポートを開きます。
- [複数選択コンボ ボックス] コントロールをクリックし、サイズ変更ハンドルの 1 つをポイントして、目的の高さまたは幅になるまでコントロールの外枠をドラッグします。
Access は、フォームまたはレポートの隣接するコントロールを下方向または左または右に自動的に移動します。 - 変更内容を保存します。
複数値を持つフィールドのプロパティの更新
ルックアップ ウィザードを使用してルックアップ フィールドを作成すると、ルックアップ フィールドのプロパティは自動的に設定されます。 複数値を持つフィールドのデザインを変更するには、フィールドの [ルックアップ] プロパティを設定します。
- テーブルを [デザイン ビュー] で開きます。
- [フィールド名] 列で複数値フィールドの名前をクリックします。
- [フィールド プロパティ] で [ルックアップ] タブをクリックします。
- [ 表示コントロール] プロパティを [コンボ ボックス] に設定して、使用可能なすべてのプロパティを表示します。 詳細については、「ルックアップ フィールドのプロパティ」を参照してください。
複数値を持つフィールドの削除
大事な データを含む複数値フィールドを削除すると、そのデータは完全に失われます。削除を元に戻すことはできません。 この理由から、テーブルのフィールドやその他のデータベースのコンポーネントを削除する前に、データベースをバックアップすることをおすすめします。
[データシート ビュー] から削除する
- テーブルを [データシート ビュー] で開きます。
- 複数値を持つフィールドを見つけ、見出し行 (名前) を右クリックし、[フィールドの削除] をクリックします。
- [はい] をクリックして、削除を確定します。
[デザイン ビュー] から削除する
- テーブルを [デザイン ビュー] で開きます。
- 複数値フィールドの横にある行セレクターをクリックし、DELETE キーを押すか、行セレクターを右クリックして [行の 削除] をクリックします。
- [はい] をクリックして、削除を確定します。
ルックアップ フィールドのプロパティ
| 設定するプロパティ | 目的 |
|---|---|
| 表示コントロール | このプロパティを設定して、どのプロパティを表示するかを制御します。
|
| 行ソースの種類 | ルックアップ フィールドへ入力する値は、別のテーブルまたはクエリからの値を使用するのか、指定する値のリストの値を使用するのかを選択します。 テーブルまたはクエリのフィールドの名前を使用してリストを埋めることもできます。 |
| 行ソース | ルックアップ フィールドの値を提供するテーブル、クエリ、または値のリストを指定します。 [行ソースの種類] が [テーブル/クエリ] または [フィールド リスト] に設定されている場合は、このプロパティはテーブルまたはクエリの名前、またはクエリを表す SQL ステートメントに設定する必要があります。 [行ソースの種類] が [値リスト] に設定されている場合は、このプロパティはセミコロンで区切られた値のリストを含める必要があります。 |
| 連結列 | ルックアップ フィールドに格納されている値を提供する列を行ソースで指定します。 この値には、1 から行ソース内の列数の範囲の値を使用できます。 格納する値を提供する列は、表示列と同じ列と同じである必要はありません。 |
| 列数 | ルックアップ フィールドに表示できる行ソースの列数を指定します。 表示する列を選択するには、[列幅] プロパティで列幅を指定します。 |
| 列見出し | 列見出しを表示するかどうかを指定します。 |
| 列幅 | 各列の列幅を入力します。 ルックアップ フィールドの表示値は、[列幅] プロパティで 0 以外の幅に指定された列の数です。 特定の列 (ID 列など) を表示させないようにするには、幅に 0 を指定します。 |
| リスト行数 | ルックアップ フィールドを表示するときに表示される行の数を指定します。 |
| リスト幅 | ルックアップ フィールドを表示するときに表示されるコントロールの幅を指定します。 |
| 入力チェック | リストにない値を入力可能にするかどうかを選択します。 |
| 複数の値を許可する | ルックアップ フィールドで複数の値を選択できるかどうかを示します。 このプロパティの値は、「はい」から「いいえ」に変更できません。 |
| 値リストの編集の許可 | 値リストに基づくルックアップ フィールドのアイテムを編集可能にするかどうかを指定します。 このプロパティが [はい] に設定されている場合、単一列の値リストに基づくルックアップ フィールドを右クリックすると、[リスト項目の編集] メニュー オプションが表示されます。 ルックアップ フィールドに複数の列がある場合は、このプロパティは無視されます。 |
| リスト項目編集フォーム | テーブルまたはクエリに基づくルックアップ フィールドのリスト項目を編集するために使用する、既存のフォームを指定します。 |
| 値集合ソースの値のみの表示 | [複数の値を許可する] が [はい] に設定されている場合は、現在の行ソースに一致する値のみを表示します。 |