1. テーブル定義とリレーションシップの設定
「人」と「性別」テーブルがある。
「人」テーブルの「性別id」が、「性別」テーブルの「id」を参照する。
「性別」テーブルの内容は、以下の通り。
id はシステムが自動的に割り当てる数値。CD は性別コード。 id は不変とし、性別コードはユーザが変更可能な値とする。
ルックアップを利用しないで、「人」テーブルにデータを入力する場合、「人」テーブルの「性別id」に、「性別」テーブルの「id」に存在する値を、直接入力しなければならない。
2. テーブルにおけるルックアップの設定
ルックアップの機能を利用しないと、性別を入力しにくい。
「人」テーブルにおいて、「性別id」フィールドの「ルックアップ」を設定する。
- 「表示コントロール」を「コンボボックス」に変更。
- 「値集合ソース」をリレーションを設定した「性別」テーブルにする。
- 「連結列」を 1 に設定。理由は、「性別」テーブルの id が、1 列目に存在するため。
- 「列数」を 3 に設定。。この値が、「人」テーブルにおいて「性別id」を入力するときのコンボボックスの列数に対応する。
- 「列幅」は、上記の「列数」で表示した列を表示する長さ。
- 「リスト幅」は、上記の「列幅」の合計。
よく忘れるのは「連結列」の意味。本来、RDB の列に順序はない。
ルックアップの設定をした場合、「性別コード」を入力するとき、「性別の名称」を確認しながら入力できる。ただし、「人」テーブルのデータを一覧するとき、性別id には性別コードではなくて id が表示されるのでわかりずらい。
そこで、「列幅」の先頭を 0 cm に設定し、全体の「リスト幅」を 4 cm に変更する。
これにより id が表示されなくなり、性別コードが先頭に見える。テーブルの内容を一覧したとき、性別コードで表示されるため、データの内容を把握しやすい。
3. クエリをルックアップ
上記の例では、ルックアップする先が「テーブル」だった。(「値集合タイプ」がテーブル)。
ルックアップ先は、「連結列」、つまり順序で指定している。このため、ルックアップ先のテーブルの列の順序を変更すると、影響を与える。
そのため、「性別」に対するクエリ (q_性別) を作成しておき、「値集合タイプ」でクエリを参照する方が良い。
「性別id」のルックアップの設定は、
- 「値集合ソース」をテーブルからクエリに変更
- 「連結列」を 3 に設定。 (クエリにおいて、id を 3 列目にしたため。)
- 「列幅」を 1cm, 3cm に変更。(3 列目の id の設定は不要。)
これにより、元のテーブルを変更しても、ルックアップの設定に影響が及ばなくなる。
4. フォームのコンボボックスにおけるルックアップの設定
追記 (2010.1.16) : フォームのコンボボックスにおけるルックアップの設定も、テーブルのときと同様に考えればよい。
コンボボックスにしたいコントロールを
- 「右クリック > コントロールの種類の変更 > コンボボックス」
を選択。
ルックアップするソースの設定
- コントロールの「プロパティ > データ」で 値集合タイプを「テーブル/クエリ」
- 値集合ソースで、ルックアップしたいテーブル、または、クエリを選択。
- ルックアップしたいテーブル、または、クエリの主キーが1 行目に設定されている場合、連結列を `1’ とする。
コンボボックスの表示の設定
表示されるコンボボックスの列を、以下のようにしたいとする。
ID, CD, 名称
ただし、主キーである ID はユーザに見えないようにしたい。
先ほどのコンボボックスのプロパティにおいて、書式タブを選択。
- 列数を 3
- 列幅で 3 列それぞれの長さを設定。ただし、1 列名の ID が表示されないように 0 とする。ここでは一々単位である cm を入力する必要はない。
- リスト幅は上記で設定した値の合計。
参考
- はじめて作るAccessアプリケーション, pp.55-60
0コメント:
コメントを投稿