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

解決済みの質問

Accessのテーブルから成績一覧表を作成したい。

こんにちは。

ExcelはVBAまで使えるレベルですが、Accessはまったくの初心者です。

基本的なことだと思うのですが、Access2003の使い方で質問です。何をどう調べていいのかわからないので、お願いします。

Accessのテーブルで「名簿」、「成績」、「科目名」の3つのテーブルがあります。

それぞれのテーブルのレコードの内容は以下の通りです。
「名簿」--- 番号(5桁で1年1組1番は10101となっています)、氏名
「成績」--- 番号、氏名、成績(5段階です)、科目番号(1~100まで)
「科目名」 --- 科目番号、科目名

以上のテーブルを使って、エクセルの表で成績一覧表を作るようなことは可能なのでしょうか?エクセルだとA列に番号、B列に氏名、C列以下が科目名が入り、それぞれの生徒の成績が横並びになりますが、そのように表示させることは可能かどうかということです。

Accessのことはよくわからないので、補足が必要であれば指摘して下さい。

よろしくお願いします。

投稿日時 - 2011-02-16 10:15:04

QNo.6526636

困ってます

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

まず、テーブルの正規化がちょっとおかしいです。
『氏名』は、多分、生徒さんのお名前と思いますが名簿と成績の両方にあります。
成績テーブルに『氏名』は必要ありません

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

投稿日時 - 2011-02-16 10:35:40

お礼

回答ありがとうございます。

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

クエリーもまだよくわかっていないので、もう少し勉強してみます。

投稿日時 - 2011-02-16 16:41:41

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

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

回答(6)

ANo.6

クエリ作成のSQLビューにて
以下のSQLを科目の数分作成して下さい。
※「科目名.科目番号="1"」となっている部分の"1"を科目のコード舞に変更が必要です。
SELECT 成績.番号, 成績.氏名, 科目名.科目名, 成績.成績
FROM 成績 INNER JOIN 科目名 ON 成績.科目番号=科目名.科目番号
WHERE 科目名.科目番号="1";

上記のクエリが100個出来ると思います。

これを、新たなクエリを作成し名簿の番号と紐づけます。
その際線を右クリックし、結合プロパティの「成績の全レコードと~」を選択します。
これを科目の数分行います。

これでご要望の件は達成できると思います。

投稿日時 - 2011-02-16 11:34:39

お礼

回答ありがとうございます。

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

投稿日時 - 2011-02-16 17:00:01

ANo.5

主に、テーブル、クエリ、フォーム、レポート、マクロとあります。

印刷するにはレポート作成、そのデータはテーブルにあるものだったりクエリの結果だったりします。

このデータ群を作らないと出せないのでまずそこから。

レポートでデータ群、つまりはレコードソースにこのクエリを指示します。

投稿日時 - 2011-02-16 11:15:22

お礼

回答ありがとうございます。

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

投稿日時 - 2011-02-16 16:56:24

ANo.4

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

投稿日時 - 2011-02-16 11:06:17

お礼

回答ありがとうございます。

クエリの内容ですよね?ちゃんと理解できるように勉強します。

投稿日時 - 2011-02-16 16:49:05

ANo.3

あと ご希望の質問の内容とは異なりますが 成績テーブルに テストの時期(2011-1学期末とか)の列を作成しておくと一年間のデータを管理することができるようになります。

それと、名簿の管理ですが学年クラス番号で取るのではなくあくまでもそれは、IDではなくデータとすべきです。
というのは、一年経つと同じ人間が学年が上がりクラスも変わり出席番号も変わります。
成績の推移が追えなくなるので学年やクラスに依存する番号で識別すべきではありません。

その様にすれば、年度を越えて成績の推移を見ていくことも可能になります。

Access には、クロス集計という機能がありますそれを利用すると
生徒を一行にして科目を横に並べる表も作成することができるので生徒別の能力表が簡単に作成できます。

Cindy.

投稿日時 - 2011-02-16 10:44:49

お礼

回答ありがとうございます。

はい、ご指摘の通りです!試験名や3年間通してのIDが必要ですね。

クロス集計なんですね。少しわかりかけてきました。ありがとうございました。

投稿日時 - 2011-02-16 16:43:17

ANo.1

可能です。

クエリの作成を行い。
成績と科目名の科目番号を結合して下さい。

これ以上は、こちらをご覧下さい。
http://ms-access.seesaa.net/category/1802163-1.html

投稿日時 - 2011-02-16 10:28:56

お礼

早速の回答ありがとうございます。

クエリを作成したのですが、各レコードが番号、氏名、成績、科目名が並ぶだけで、エクセルの一覧表のようにはならないのですが...

何か操作がおかしいでしょうか?

投稿日時 - 2011-02-16 10:45:50

あなたにオススメの質問