• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Accessのテーブルから成績一覧表を作成したい。)

Accessのテーブルから成績一覧表を作成する方法

このQ&Aのポイント
  • Accessのテーブルを使って、エクセルの表で成績一覧表を作成する方法を教えてください。
  • Accessのテーブルには「名簿」、「成績」、「科目名」という3つのテーブルがあります。
  • エクセルでの成績一覧表では、A列に番号、B列に氏名、C列以下が科目名が入り、それぞれの生徒の成績が横並びに表示されます。

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

  • ベストアンサー
回答No.2

まず、テーブルの正規化がちょっとおかしいです。 『氏名』は、多分、生徒さんのお名前と思いますが名簿と成績の両方にあります。 成績テーブルに『氏名』は必要ありません で クエリーで 名簿テーブルの番号(このフィールド名も『名簿ID』とか『生徒番号』にしたほうが後々わかりやすい)と成績テーブルの番号 成績テーブルの科目番号と科目テーブルの科目番号 を結合するだけでご希望のクエリーは作成できます。 で、この場合 成績テーブルがメインのテーブルですので成績テーブルから矢印を引くようなクエリーにしてください。 万が一 生徒が登録されていない とか 科目が登録されていない 場合でもその様にしたら 生徒名、科目名が空白には成りますが表としては、行が存在しますのでマスター(この場合は、名簿、科目名)が未登録であることが解るようになります。

CaveatEmptor
質問者

お礼

回答ありがとうございます。 ご指摘のとおり、テーブルの作成に問題がありますね。エクセルでも先を見通して表を作らないといけないのは経験済みなのですが、まだアクセスではどんなことができるのかがよくわからない状態です。 クエリーもまだよくわかっていないので、もう少し勉強してみます。

その他の回答 (5)

回答No.6

クエリ作成のSQLビューにて 以下のSQLを科目の数分作成して下さい。 ※「科目名.科目番号="1"」となっている部分の"1"を科目のコード舞に変更が必要です。 SELECT 成績.番号, 成績.氏名, 科目名.科目名, 成績.成績 FROM 成績 INNER JOIN 科目名 ON 成績.科目番号=科目名.科目番号 WHERE 科目名.科目番号="1"; 上記のクエリが100個出来ると思います。 これを、新たなクエリを作成し名簿の番号と紐づけます。 その際線を右クリックし、結合プロパティの「成績の全レコードと~」を選択します。 これを科目の数分行います。 これでご要望の件は達成できると思います。

CaveatEmptor
質問者

お礼

回答ありがとうございます。 「数分作成」ということさえよくわからないので、もっと勉強してみたいと思います。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.5

主に、テーブル、クエリ、フォーム、レポート、マクロとあります。 印刷するにはレポート作成、そのデータはテーブルにあるものだったりクエリの結果だったりします。 このデータ群を作らないと出せないのでまずそこから。 レポートでデータ群、つまりはレコードソースにこのクエリを指示します。

CaveatEmptor
質問者

お礼

回答ありがとうございます。 なるほどエクセルのようにシートに表を作るだけではなく、印刷用にレポートを作ったりしないといけないのですね。勉強になりました。

回答No.4

SELECT 成績.番号, 名簿.氏名, 科目.科目名, 成績.成績 FROM 科目 RIGHT JOIN (成績 LEFT JOIN 名簿 ON 成績.番号 = 名簿.番号) ON 科目.科目場号 = 成績.科目番号;

CaveatEmptor
質問者

お礼

回答ありがとうございます。 クエリの内容ですよね?ちゃんと理解できるように勉強します。

回答No.3

あと ご希望の質問の内容とは異なりますが 成績テーブルに テストの時期(2011-1学期末とか)の列を作成しておくと一年間のデータを管理することができるようになります。 それと、名簿の管理ですが学年クラス番号で取るのではなくあくまでもそれは、IDではなくデータとすべきです。 というのは、一年経つと同じ人間が学年が上がりクラスも変わり出席番号も変わります。 成績の推移が追えなくなるので学年やクラスに依存する番号で識別すべきではありません。 その様にすれば、年度を越えて成績の推移を見ていくことも可能になります。 Access には、クロス集計という機能がありますそれを利用すると 生徒を一行にして科目を横に並べる表も作成することができるので生徒別の能力表が簡単に作成できます。 Cindy.

CaveatEmptor
質問者

お礼

回答ありがとうございます。 はい、ご指摘の通りです!試験名や3年間通してのIDが必要ですね。 クロス集計なんですね。少しわかりかけてきました。ありがとうございました。

回答No.1

可能です。 クエリの作成を行い。 成績と科目名の科目番号を結合して下さい。 これ以上は、こちらをご覧下さい。 http://ms-access.seesaa.net/category/1802163-1.html

CaveatEmptor
質問者

お礼

早速の回答ありがとうございます。 クエリを作成したのですが、各レコードが番号、氏名、成績、科目名が並ぶだけで、エクセルの一覧表のようにはならないのですが... 何か操作がおかしいでしょうか?

関連するQ&A