こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

ACCESS2000 テーブルを分けてアンケートを集計するには?

いつもお世話になっております。
WINXPでACCESS2000SR-1を使用し、
現在、アンケートを集計するデータベースを作成しています。

アンケート項目(フィールド)は、255近くあるので
テーブルを何種類かに分けてデータベースを作ろうと思います。

例えば
Aテーブルには「名前」
B,C,Dテーブルにはアンケートの回答を入れようと思います。
この場合、Aのレコードに対してB,C,Dのレコードを関連付けるにはどうしたらよいですか?

また、クエリーでテーブルを合体すれば良いのですが
フィールド数が多いためダメです。

宜しくお願い致します。

投稿日時 - 2002-10-16 23:05:36

QNo.382564

すぐに回答ほしいです

質問者が選んだベストアンサー

回答テーブル
  回答ID
  回答者氏名
  回答日
  :

項目1テーブル
  回答ID
  回答1-1
  回答1-2
  :

項目2テーブル
  回答ID
  回答2-1
  回答2-2
  :

というような感じで作られてはいかがでしょうか。
どのテーブルにも回答IDがあるため、回答テーブルとリレーションを張るだけで「誰の回答か」、ということが分かります。


もし入力画面を作成されるのでしたら、メインフォームとサブフォームの親子構造にするといいかもしれません。

まず、各項目テーブルごとに小さめのフォームを作ります。フォームの名前は、「サブフォーム1」のように、名前+半角数字 にしておきます。(これ重要)

次に大き目のフォームに回答テーブルの内容と、サブフォームコントロール、そして前項目ボタン、次項目ボタンを配置します。サブフォームには、先に作ったフォームを設定します。

で、ボタンを押下したら表示するサブフォームを切り替える、みたいなマクロを作るわけです。

投稿日時 - 2002-10-16 23:45:52

お礼

早速の回答、ありがとうございます。
やっぱり基本が全くわかっていなかったようです。
こういう場合は、#1のa zzuiiiさんも言っていたように
回答テーブル・項目テーブルの回答IDを主キーにして
一対一にするのですよね。
データ型は回答テーブル・項目テーブルともオートナンバーにするのでしょうか?オートにした場合、参照整合性のところにしかチェックできませんが
アンケートを入力しているときに問題は出ないのでしょうか?
色々試しながらやってみます。
お時間がありましたら、教えてください。すみません。

投稿日時 - 2002-10-18 06:07:40

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

ARC

オートにするなら、回答テーブルだけですね。その場合、項目テーブルは長整数型にします。(これでリレーションシップは設定できるようになるはずです。)


それで、入力の方ですが、(1)クエリでするならば一々、各テーブルに同じ回答IDを入力してやらなければなりません。

それでは面倒くさいので、#2の回答では(2)入力フォームを作成してはどうかなぁ、って書いたわけです。
親子フォームで作成すれば、親フォームを入力した時点で子フォームには自動でIDが入力されますから。

あと、今思いついたんですが、フィールド数が255以下であれば、Excelでも入力できるんですよね。
(3)Excelで入力した後、Accessにインポートするって手も考えられます。

(1)は、各レコードごとにちょびっと手間。
(2)は、最初に結構手間ですが、後は楽。
(3)は、最後に少し手間。
ってところでしょうか。
個人的には、分量が多い、もしくはきちっとしたものを作らなくてはならない場合には(2)、とにかく速度優先でさっさと入力してしまいたい場合には(3)かなぁ、と思います。

投稿日時 - 2002-10-18 23:07:13

お礼

回答ありがとうございます。
(あと、言い忘れてしまいましたが、今回の質問を見に来てくれてありがとうございました!)

(2)にしようと思ったのですが、親子フォームというと、親フォームの下に子フォームが見えるのですよね。

ちょっと、うまく説明できませんが
今まで作ったものは、まず、フォーム1で回答者についての情報を入れます。そこには質問項目(8個)のボタンがあって、
項目1を入力するときは、そのボタンをおし、項目1のフォーム2がでいます。入力が終わったら、またフォーム1に戻るというように作りました。


親子フォームにしないとIDは自動に入らないのでしょうか?

色々質問して申し訳ありません。
宜しくお願い致します。

投稿日時 - 2002-10-20 12:56:58

ANo.1

例えば、Aテーブルには連番(重複なしの番号)、名前を入れる。
これが、いわゆるユーザIDとなります。
ユーザIDが決まれば、名前が一意に決まります。
(このIDを主キーと言います)
B,C,DテーブルにはユーザIDカラムを作ります。
これにより、回答が誰のものかわかるようになります。

投稿日時 - 2002-10-16 23:24:10

お礼

早速の回答、ありがとうございます。
基本がわかっていなかったです。
色々試しながらがんばります。

投稿日時 - 2002-10-18 05:58:24

あなたにオススメの質問