• ベストアンサー

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

いつもお世話になっております。 WINXPでACCESS2000SR-1を使用し、 現在、アンケートを集計するデータベースを作成しています。 アンケート項目(フィールド)は、255近くあるので テーブルを何種類かに分けてデータベースを作ろうと思います。 例えば Aテーブルには「名前」 B,C,Dテーブルにはアンケートの回答を入れようと思います。 この場合、Aのレコードに対してB,C,Dのレコードを関連付けるにはどうしたらよいですか? また、クエリーでテーブルを合体すれば良いのですが フィールド数が多いためダメです。 宜しくお願い致します。

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

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

回答テーブル   回答ID   回答者氏名   回答日   : 項目1テーブル   回答ID   回答1-1   回答1-2   : 項目2テーブル   回答ID   回答2-1   回答2-2   : というような感じで作られてはいかがでしょうか。 どのテーブルにも回答IDがあるため、回答テーブルとリレーションを張るだけで「誰の回答か」、ということが分かります。 もし入力画面を作成されるのでしたら、メインフォームとサブフォームの親子構造にするといいかもしれません。 まず、各項目テーブルごとに小さめのフォームを作ります。フォームの名前は、「サブフォーム1」のように、名前+半角数字 にしておきます。(これ重要) 次に大き目のフォームに回答テーブルの内容と、サブフォームコントロール、そして前項目ボタン、次項目ボタンを配置します。サブフォームには、先に作ったフォームを設定します。 で、ボタンを押下したら表示するサブフォームを切り替える、みたいなマクロを作るわけです。

katakko
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

オートにするなら、回答テーブルだけですね。その場合、項目テーブルは長整数型にします。(これでリレーションシップは設定できるようになるはずです。) それで、入力の方ですが、(1)クエリでするならば一々、各テーブルに同じ回答IDを入力してやらなければなりません。 それでは面倒くさいので、#2の回答では(2)入力フォームを作成してはどうかなぁ、って書いたわけです。 親子フォームで作成すれば、親フォームを入力した時点で子フォームには自動でIDが入力されますから。 あと、今思いついたんですが、フィールド数が255以下であれば、Excelでも入力できるんですよね。 (3)Excelで入力した後、Accessにインポートするって手も考えられます。 (1)は、各レコードごとにちょびっと手間。 (2)は、最初に結構手間ですが、後は楽。 (3)は、最後に少し手間。 ってところでしょうか。 個人的には、分量が多い、もしくはきちっとしたものを作らなくてはならない場合には(2)、とにかく速度優先でさっさと入力してしまいたい場合には(3)かなぁ、と思います。

katakko
質問者

お礼

回答ありがとうございます。 (あと、言い忘れてしまいましたが、今回の質問を見に来てくれてありがとうございました!) (2)にしようと思ったのですが、親子フォームというと、親フォームの下に子フォームが見えるのですよね。 ちょっと、うまく説明できませんが 今まで作ったものは、まず、フォーム1で回答者についての情報を入れます。そこには質問項目(8個)のボタンがあって、 項目1を入力するときは、そのボタンをおし、項目1のフォーム2がでいます。入力が終わったら、またフォーム1に戻るというように作りました。 親子フォームにしないとIDは自動に入らないのでしょうか? 色々質問して申し訳ありません。 宜しくお願い致します。

すると、全ての回答が全文表示されます。
  • a_zzurri
  • ベストアンサー率30% (3/10)
回答No.1

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

katakko
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A