トップ > Access2007目次 > ルックアップでらくらく入力
1)2)3)4)

2) ルックアップでラクラク入力

ルックアップ、以前一度挑戦しましたね。
ただ、あのときは、うさぎ、きつね、かもめ・・・と、リスト表示したい値を直接入力しました。
今度は、別のテーブルのレコードをリスト表示するルックアップです。

ルックアップを「ラクラク」と感じるかどうかは個人差があるでしょうが・・・・・ルックアップはAccessっぽい機能のひとつなのでご紹介しないわけにはいかないでしょう。Access2007になってさらに機能がアップしてますしね。
ひととおりやってみて、「活用できそうだな」とか「なんの役に立つのか理解できない」とか、何か感じ取ってください。

ここでは、「所属」と「資格」フィールドの入力をするための仕組みを作ります。まずは「所属」から。

 

1「所属」のルックアップ

今回作成した3つのテーブルは、それぞれちょっとだけかかわり合いを持っています。
「所属テーブル」の場合、「所属」フィールドに入力する値を参照する”台帳”みたいな役割を担います。
「所属テーブル」を参考にして、社員テーブルの「所属」フィールドの入力をしよう、という感じですね。

あまり難しく考えてしまうと先細りになっちゃうので、皆さんが電話帳とか調べるときの様子に置き換えてイメージしてください。

「所属の入力 → どんな所属があったけ? → 所属テーブルを開いて調べよう → ああ、今川さんは営業一課ね → 営業一課を表す 1 を入力」
図1:「社員テーブル」と「所属テーブル」はちょいとかかわりがござんす

 

上の図を頭においていただきながら、ではでは、やってみましょう。

操作中デザインビューに切り替え、「所属」フィールドをクリックしてください。
図2:デザインビューに切り替えて、「所属」フィールドをクリック

 

操作中画面下のほうに「所属」のフィールドプロパティが表示されます。「ルックアップ」というちっこいタブがあるので、これをクリックしてください。
図3:フィールドプロパティの「ルックアップ」をクリックだ

 

操作中「表示コントロール」を変更します。
コンボボックスに変えましょう。
図4:表示コントロールを「コンボボックス」に変えるざんす

 

操作中コンボボックスに変更すると、プロパティの内容が少し変わります。
「値集合ソース」というところをクリックして、一覧から「所属テーブル」を選びます。
図5:値集合ソースを選択。「所属テーブル」を選ぼう

 

操作中後は、コンボボックスの見栄えを整えるためのプロパティを、お好みで少々いじります。
以下のように入力してみてください。
全部、半角の数字記号で入力してくださいね。

連結列:  1
列数:   2
列幅:  1cm;2cm  (半角セミコロンで区切る)
リスト幅: 3.5cm
(カーソルを他に移動すると半端な数に変わることがあるが、だいたい3.5cmくらいになってればOK)

このほかのプロパティは変えなくてよいです。
図6:コンボボックスの見栄えを設定するプロパティを微調整

 

操作中変更できたら、上書き保存してから、データシートビューに切り替えて試してみましょう。
図7:保存してから、データシートビューに切り替えだ

 

操作中新規にレコード入力しましょうか。適当なデータを入力していただいて、いよいよ「所属」フィールドの入力に取り掛かります。
リスト表示できるようになってますよね。
図8:「所属」フィールドの変化に注目。リストが表示されるようになっています。

 

操作中リスト表示してみましょう。
「所属テーブル」の中身が表示されるはずなんですが・・・。

どの部署でもいいので、どれかひとつ、選択してみてください。
図9:「所属テーブル」の中身がそのままリスト表示されます

 

操作中コンボボックスを閉じると、「所属」には数字だけが残ります。
え?なんで数字なのかって?
今回はたまたま、です。
図10:選択後の様子

 

「なんでこんなめんどくさいことするの???」という疑問を持つ方も多いかもしれませんが、これが「リレーショナルデータベース」の基本的な考え方なんですよ。

テーブルには必要最低限のデータだけを持つようにして、とあるフィールドの値を手がかりに別のテーブルから必要な情報を手繰り寄せる・・・という仕組みが、リレーショナルデータベースの基本的な考え方なんです。

ルックアップは、その考え方を具体的に形にした機能のひとつなんですネ。
図11:「所属」の値を手がかりにして、「所属テーブル」か所属名や所属長情報を手繰り寄せる

 

今日作っているデータベースは練習用なので、レコード件数もフィールド数も少ないし、特にこれといった目的もないので、実感がわかないかもしれないんですが、効率よくデータを管理する方法として、なかなか有効ですよ。否定派の人もいますけどね。

いいか悪いか、便利か不便か、立派か愚かか、高度か単細胞かは別にして、Accessはこういう「リレーショナルデータベース的なデータ管理方法」をやるためのソフトなのです。

 

2ルックアップ その2  複数選択(Access2007からの新機能) 概要

「所属」のルックアップの例をもう一度イメージしていただきたいんですが、基本的に「リレーショナルデータベース」というものは、二つのテーブルの関係を、どちらか一方に重心を置いて考えます。
「社員テーブル」と「所属テーブル」の関係を例に挙げてイメージしてみましょう。
”営業一課”という部署に社員が一人の場合と、何人かいる場合とが考えられますよね。つまり、「所属テーブル」の”営業一課”という1レコードに対して、「社員テーブル」側には、1レコードだけの場合と、数レコードある場合が考えられます。
もちろん、誰も所属していない部署、というのもあるかもしれないので、「社員テーブル」側が0レコード、という可能性もありますね。

で、こういう、テーブル同士の結びつき方のパターンを、「一対一」とか「一対多」とか表現することがあります。
Accessの機能名じゃないので覚える必要はありませんが、右図のようなイメージを頭に描くことができると、Accessがぐっと扱いやすくなるんです。ほんとですよ。

まあ、こういう結びつきが目に見えるわけじゃないんで、無理やりこういう考え方をする、ってことになるんですけどね・・・。
図11:テーブルとテーブルの間の見えない”線”を見極めよう

 

基本的に、すべて左側(片方)が1であるところに注目してください。
そうなんです。リレーショナルデータベースの基本的な概念としては、二つのテーブルの結びつき方は、必ずどちらか一方が”1”で、重複しないことが条件なんです。
なので、右図のような、両方とも複数の値を持つ場合、その二つのテーブルを直接結びつけることはできないんです。右の図を参考にしてイメージしてみてください。資格を複数持っている人もいるし、同じ資格を何人かの人が持っているので、「資格テーブル」と「社員テーブル」は「多対多」の結びつき方になってしまいます。
これ、リレーショナルデータベースでは、できないんです。直接結びつけることはできないので、間に別のテーブルを挟んだりしないとなりません。

しかし!!!
図12:多対多の結びつきは、通常、リレーショナルデータベースでは不可なのだが

 

ところが、です。
Access2007では、この「多対多」の結びつきが、ある意味、できちゃうんです。
これはすごいことなんですよ・・・。いいことなのか余計なことなのかは、個々に意見の分かれるところだと思いますが・・・。
私は・・・うまく利用できるなら、画期的で嬉しいことだと思うんですが、なんか怖い気もしますね。長年、こういうことはできないものと思ってデータベースと向き合ってきましたし。

それに、Access2007からデータベースを学習し始める人にとって吉となるのかどうか・・・・。
しかししかし、Access2007の新機能としても謳われていますので、お話しないわけにはまいりません。どんなもんか見ていただいて、もし、実際に活用できそうであれば、慎重に取り入れていってください。Access2007でしか使えませんからね。。。

 

3ルックアップ その2  複数選択(Access2007からの新機能) 操作手順

前説が長くなっちゃいましたが、そういうことも踏まえつつ、「資格」のルックアップ、設定してみましょう。

操作中「社員テーブル」をデザインビューに切り替えます。
「資格」フィールドをクリックして選択しましょう。
図13:デザインビューで「資格」を選択

 

操作中 画面下のほうに、「資格」のフィールドプロパティが表示されるので、「ルックアップ」タブをクリックしましょう。この辺の操作は「所属」のときと同じです。
図14:ルックアーーーーップ!!!

 

操作中 まずは、先ほどの「所属」と同じようにやってみましょう。以下のプロパティを調整します。

■表示コントロール: コンボボックス
■値集合ソース: 資格テーブル
■連結列: 1 
■列数: 2
■列幅: 1cm;3cm
(「資格」が1センチ、「資格名」が3センチで表示)
■リスト幅: 4.5cm
(列幅の合計に、縦スクロールバーの分をちょっぴり加えてだいたい4.5センチくらいあればいいんじゃないかしら)

今回はさらに、以下のプロパティも調整します。
■複数の値の許可: はい
図15:複数の値の許可をするナリ

 

操作中 「複数の値の許可」を変更すると、これまた大掛かりなメッセージが出るんじゃないかと思います。
”複数の値を格納できるように”資格”ルックアップを変更しました。テーブルを保存した後に、この変更を元に戻すことはできません。” ですって。
「はい」ボタンをクリックしてください。
図16:「はい」ってことで

 

設定できました。
「所属」との違いは、列幅やリスト幅の長さ(資格名が長いものもありそうなので少し長めにしました)と、今回のメインイベント「複数の値の許可」だけです。


操作中よろしければ、テーブルを上書き保存し、データシートビューに戻りましょう。
図17:設定できたら、保存して、デザインビューに戻りませう

 

ではでは、テストしてみましょう。1レコード目の人の「資格」を選択してみましょう。

図18:資格の一覧はこのように表示されマッスル
操作中 一覧から、適当にいくつかクリックして選択してみてください。
どれでもいいですよ。
こうやって一覧から、この人が取得している資格を全部チェックすることで、「社員テーブル」の「資格」フィールドの入力ができるわけなんですね。



そうそう、資格を選択したら、一番下のOKボタンをクリックしてください。
これやらないと、キャンセルしたみたいな扱いになっちゃうみたいなので、チェックし終わったら必ずOKボタンをクリックしてください。


図19:チェーーーーック!

 

操作中 「資格」フィールドを改めて観察してみると、半角のカンマで区切って、数字が横並びになっていますね。
これは、「資格テーブル」の一番左側のフィールド(連結列=1)の値が横に並んでいるんです。
なんとなく、「中途半端な感じだなー。これじゃ何だかわからないじゃん」という方もいらっしゃるかもしれませんが、いちおう、これが、データベースの世界では基本形です。

うーん・・・という方のために、次に、この「資格」フィールドの具体的な活用方法をひとつご紹介しようと思います。
まあ、ついでに、クエリというオブジェクトについてちょっとお話したいなと思ってたりするんで、これを題材にしてクエリをひとつ作ってみましょう。
図20:これでいいんスよ。テーブル的には。

 

このページのまとめなど

  • ルックアップには、「値リスト」と「テーブル/クエリ」の2パターンがある。今回は後者を学習しました。
  • 単にプロパティの設定方法を覚えるだけでなく、テーブルとテーブルの結びつき方をイメージしよう。
  • Access2007からの新機能「複数の値の許可」はなかなかツワモノです。
Next Step!!!
  • クエリを作る  ルックアップ「複数の値の許可」を使って入力した値をどう活用するのか?
作成日:2008-12-29

コピーライト