Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


114 / 2272 ツリー ←次へ | 前へ→

【12976】Valueプロパテイについて 柚木健夫 16/3/24(木) 14:43 質問[未読]
【12977】Re:Valueプロパテイについて かるびの 16/3/25(金) 11:03 発言[未読]

【12976】Valueプロパテイについて
質問  柚木健夫  - 16/3/24(木) 14:43 -

引用なし
パスワード
   現状資格リストを見て社員がそれぞれ取得した資格を入力しています。
単一のルックアップフイールドはリストから一つの値しか保存できませんが、
複数の値を持つフイールドには複数の値を選択して保存できる。
つまり一つのフイールドにいくつもの資格名を登録できる。
また複数の値を持つフイールドの内容を表示するにはValueプロパテイーを使用してクロス集計クエリを作成し、列表示に資格名、行表示に社員名、値欄に資格数を表示できる。ということを知りました。
肝心要の複数の値を持つことができるフイールドの作り方、Valueプロパテイーの作成の仕方がわかりません。
ご教示ください。よろしくお願いします。

【12977】Re:Valueプロパテイについて
発言  かるびの  - 16/3/25(金) 11:03 -

引用なし
パスワード
    複数値フィールドですか。

 複数値フィールドは、アクセス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結合をベースにして、クロス集計クエリを作ります。
集計方法は、「カウント」を選びます。
 
 こうすれば、複数値フィールドを使わなくても、上記のようなクロス集計クエリを作れます。

114 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078188
(SS)C-BOARD v3.8 is Free