テーブルの1つの列(フィールド)には基本的に1つの値しか記録できませんが、表示コントロール(入力方法)をコンボボックスあるいはリストボックスとしている場合には設定により”複数の値”を記録できるようになります。Access2007から追加された機能です。
使いどころが難しい面もあるのですが、うまく使えばテーブルをむやみに増やすことなく効率的な記録ができるようになります。
設定例
まずは普通のコンボボックスの設定をしてみます。
デザインビューでルックアップタブ開き「表示コントロール」を「コンボボックス」、「値集合タイプ」を「値リスト」とし、「値集合ソース」にて選択肢のリストを設定します。
これによりクリックだけで値を入力できるようになります。
さて、再度デザインビューに戻り「複数の値の許可」プロパティの値を「はい」に切り替えます。
確認メッセージが出ます。
表示されているように一度設定すると元に戻せないため、設定が適当かどうか判断がつかない場合はファイルをバックアップしておくなどの準備をしてください。
これにより、表示されるリストにチェックを入れていく形式となり、複数の値を選択できるようになります。
ただし、「入力チェック」プロパティの値に関わらず直接入力はできなくなります。
入力を終えると、このように複数の値がカンマで区切られた形で記録されます。
これは実際に見たままの値(文字列)が記録されており、たとえばテーブルをコピーペーストしたりエクスポートした場合にはこのとおりの文字列が得られます。
さて、確かに入力は手早くなりましたが、これだけでは単に「1つの長い文字列が記録されている」だけで「複数の値を記録する」ことにはならないようにも思われます。
そこで、クエリのデザインビューを開きこのテーブルを置いてみます。
普通に「保有資格」列を表示させた場合は……
やはりテーブルと同じような表示になりますが……
デザインビューをよく見るとこのように「保有資格.Value」という値を選択できるようになっています。
これを表示させると……
選択した値が縦に並んだデータが得られますので、関数を使って保有資格の数を集計したりすることができます。
このように使い方に応じてデータの取り出し方を変えられるのがメリットです。
備考
上記の例でこの機能を用いずに記録する場合、保有資格を記録するために別のテーブルを作成する(社員番号と保有資格の2つの列を設けて記録していく)か、簡便法としてテーブルを分けずに多数の列を用意(保有資格1,保有資格2,…)して対応することとなります。
そうした手間を省けるのがこの機能のメリットですが、質的に異なる値を複数記録することはできないので、例えば「それぞれの資格の取得時期も一緒に記録したい」という場合には対応できず、結局テーブルを分けるか列を増やすしかなくなります。
要するに拡張性がないため本格的に管理すべきデータに適用するには向かず、しかも直接入力ができなくなるため、それなら最初から単純なテキストボックスにしておいた方が融通が利くのではないか、ということが起こり得ます。冒頭で使いどころが難しい、と述べたのはこのためです。