成績処理2


Accessに詳しい方なら既にお気付きのはずである。
クロス集計クエリを作成すれば一発で解決できると・・・。
しかし、それではVBAの勉強にならない。
と言うより、後で詳しく述べるがクロス集計クエリだけでは実際の学校現場では役に立たない
今回の目的は、いろいろな場面で応用可能なVBAによるデータ操作の基本を習得することである。

さて、前回のT_seisekiテーブルから、次の2つを取得する。
1. 集計対象となる生徒名の抽出
2. 集計対象となる科目の抽出
どちらも重複クエリを元に、テーブルを新規に作成する。

1.生徒名のテーブルをT_seito
2.科目名のテーブルをT_kamoku
とする。
今回の例では、全員がすべての科目の試験を受験しているが、選択科目であろうが、試験を一部欠席していようが、
集計対象となる全生徒、全科目が抽出される。

関連で付け加えると、実際の学校現場では集計対象となる生徒集団はクラスの在籍名簿を利用することになるだろう。
また集計対象科目については、市販のパッケージなどでは予めクラス単位の履修科目を登録しておくようなものがあるが、手間がかかる割にメリットが少ない。なぜなら、定期試験では中間試験を実施しない科目や、実技科目などではもともと定期試験がないものもある。虫食い状態の一覧表でもよいなら構わないが、それを避けたいなら試験の度に実施科目の設定が必要となる。そんな手間はかけたくないであろう。

さて、前回のT_seisekiおよび今回の2つのテーブル
T_seitoと
T_kamokuで
3つテーブルができた。
そして、最終的に成績一覧表の元になるテーブルT_ichiranを作成することになるが、 そのテーブル定義を見ておこう。
ついでなので、集計過程で平均点も計算しておくことにする。

デーブル定義                                

このようなテーブルを作成するが、テーブル作成のSQL文を確認しておこう。
CREATE TABLE table_Name(field_Name data_Type,…..);
のような形式となる。生徒名と平均点は固定とし、科目名は可変項目として処理されるようにする。
実際のVBAコードは次回とする。

,