2007年10月22日月曜日

Access のテーブル定義のルックアップにおけるクエリの役割

Access のテーブルの特徴は、定義の時点で既に入力について考慮することができること。

 

ID の入力時に候補をリスト表示

例えば、受注管理をするシステムにおいて、

「注文」 テーブルで、「顧客」 テーブルの ID フィールドを外部キーで参照している

とする。

「注文」 テーブルでは、「顧客」 テーブルの ID (サロゲートキー) を入力しなければならない。このとき、直接 ID を入力するのではなく、コンボボックスのようなリスト形式により、

|   ID   |   顧客の氏名   |

のように顧客名を確認しながら入力できる。コンボボックスの表示が「氏名」の「あいうえお順」になっていると入力がしやすい。

 

リスト表示用のクエリを作成

そのためには、「顧客」 テーブルに対して、「ひらがなの氏名」 と 「氏名」 の列を前に置き、ID をその後ろに配置したクエリを作成する。

|   ひらがなの氏名   |   氏名   |   ID   |

 

テーブル定義におけるルックアップの設定

次に、「注文」 テーブルの定義を開く。「顧客」 テーブルを参照する項目は、ルックアップにより上記で作成したクエリを指定。連結列をクエリにおける ID の列の順番である `3’ を入力。( Access では列の順番が意味を持つため、連結列を入力する必要がある。) そして、列幅を適当に 2 列分設定する。

先ほどクリエの定義において ID を後ろに配置した。これは、コンボボックスに ID (サロゲートキー) のように人が見れなくてもシステムが参照できればい値を表示させないための工夫だった。

 

訂正 (2007.10.22)

上記においてルックアップの設定で、

  • 連結列 「3」
  • 列数    「3
  • 列幅    「1,2,0

のように指定。ID (サロゲートキー) に対応した部分の幅を `0’ にすることによって、ユーザにキーを表示しないようにできる。

あれ?ということは、サロゲートキーをわざわざ後ろにやらなくても、幅を 0 にすればどこでもいいってことか

 

関連記事

1コメント:

匿名 さんのコメント...

ナイス!マイツッコミ♪