|
複数値フィールドですか。
複数値フィールドは、アクセス2007以降の新機能であり、
当方のアクセスは2003のため、複数値フィールドは使えず、使ったこともありません。
そのため、次のページを紹介するくらいしかできません。
ht tps://support.office.com/ja-jp/article/%E8%A4%87%E6%95%B0%E5%80%A4%E3
%82%92%E6%8C%81%E3%81%A4%E3%83%95%E3%82%A3%E3%83%BC%E3%83%AB%E3%83%89%E3
%81%AE%E6%A6%82%E8%A6%81-7c2fd644-3771-48e4-b6dc-6de9bebbec31
ただ、複数値フィールドの評判はあまりよくないようです。
以前、どこかの掲示板で、識者が「複数値フィールドは扱いづらそうだ」という意見を述べていたのを記憶しています。
また、複数値フィールドを使いたくなるような場面で、複数値フィールドを使わずに実現する方法は存在します。
2003以前では、この方法をとるべきものとされていました。
そのため、下手に複数値フィールドを使うと、
どのテーブルとどのテーブルを使って、どのようなクエリを作るか
ということが見通しづらくなってしまいます。
こうしたことから、複数値フィールドは敬遠されているのではないかと思います。
なお、複数値フィールドを使わない場合にどうすべきかについて触れておきます。
社員が取得した資格を管理したいということですから、
作るべきテーブルは、次のようなものになると思います。
テーブル名:T社員
フィールド:
社員ID オートナンバー型(主キー)
社員名 テキスト型(又は短いテキスト)
テーブル名:T資格
フィールド:
資格ID オートナンバー型(主キー)
資格名 テキスト型
テーブル名:T保有資格
フィールド:
保有ID オートナンバー型(主キー)
社員ID 長整数型
資格ID 長整数型
なお、T社員とT資格は多対多結合となります。
そのため、結合テーブルが必要になりますが、T保有資格がそれに該ります。
そして、レコードの表示は、メイン/サブ形式のフォームを使って行うことになると思います。
すなわち、メインフォームに社員名などを表示させ、
サブフォームには当該社員が持っている資格を表示させます。
下記のような感じです。
┌────────────┐
│ ┌────┐ │
│社員名 │田中 │ │
│ └────┘ │
│ │
│┌─────────┐ │
││資格名 │ │
││英検3級 │ │
││珠算2級 │ │
││簿記3級 │ │
│└─────────┘ │
└────────────┘
このイメージは、メインフォームを単票フォーム、サブフォームをデータシート又は帳票フォーム
としたものですが、メインフォームを帳票フォームにしたり、データシートにすることもできます。
クロス集計クエリを作りたいとのことですが、こんな感じでしょうか。
英検3級 珠算2級 簿記3級
山田 1 0 0
田中 1 1 1
中村 0 0 0
村木 0 1 1
このようなクロス集計クエリは、上記に示したテーブルから作ることができます。
具体的には、
まず、上記の3テーブルを結合させたクエリを作ります。このクエリの名前を仮に「Q結合」だとします。
次に、Q結合をベースにして、クロス集計クエリを作ります。
集計方法は、「カウント」を選びます。
こうすれば、複数値フィールドを使わなくても、上記のようなクロス集計クエリを作れます。
|
|