「試験マスター」を追加する
テストごとの点数の集計は、「実施日」でまとめればいいかなと思っていたんですが、ごくごく例外ではありますが、必ずしも全員が同じ日に受けるとは限らないようです。それに、ずっと後になってデータの入力をする可能性もありますから、「実施日」を間違えて入力してしまう可能性もあります。
となると、「実施日」以外に、点数をまとめるための方法を考えておいたほうがよさそうです。
こういうところがデータベース設計の腕の見せ所になるんですが、どうしましょうかね・・・。
今回は「実施日」の代わりに、テストの名称を入力できるようにしておきましょうか。年間通して、試験の実施スケジュールはだいたい決まっていますので、予め、今年実施される予定のテストの情報を入れておくテーブルを用意しようと思います。
名前は、「試験マスター」とでもしておきましょうか。
「試験マスター」テーブルを作成する
テーブルを新規に作成します。
図1:左上の、ほら
1列目は「試験コード」。これが主キーになります。
「試験番号」のがよかったかな・・・。
名前はある程度統一したほうがいいんですよね。
まあいいや。
図2:試験コード
データ型はテキスト型に変更してください。
何かしら数字が付けばいいのならオートナンバー型のままでもいいのですが、今回はちょっと意味のある番号を持たせようと思うので、英字や記号も入力できるよう、テキスト型にしておきましょう。
A-001とか。なんかかっこいいし。試験っぽい。
図3:テキスト型にしておこう
後は、
「試験名」 : テキスト型
「実施日」 : 日付/時刻型
という感じで、フィールドを全部で3つ設けます。
「実施日」はオマケです。にぎやかしで。雰囲気です。
なくてもいいですよ。
図4:「実施日」は今回は特に使わないので、なくてもいいですよ
「試験マスター」という名前をつけて保存します。保存は、左上の、フロッピーディスクの絵柄の・・・。
保存できたら、今年実施予定のテストの情報を入れておきましょう。
適当でいいですよ。今日は練習ですからね。
ただ、5~6件あったほうが雰囲気出ます。
図5:適当にデータ入れておいて
「成績テーブル」も手直し
次に、メインとなる「成績テーブル」を修正します。デザインビューで開いてください。
やり方としては二通りあるんですが・・・。「試験コード」フィールドを追加するか、「実施日」フィールドを「試験コード」に置き換えるか、なんですけどね。
「実施日」も必要だ、という場合は前者ですね。
今日は・・・置き換えちゃいましょう。
図6:「試験マスター」に合わせて「成績テーブル」も微調整
データ型も、日付時刻のままじゃアレなので、テキスト型に変更してください。
図7:「試験コード」はテキスト型にしたんだもんね
せっかくなので、「ルックアップ」の設定もやりましょうか。
右の図を参考にしていただいて、「試験マスター」のデータを参照できるようにしてみてください。
列幅などは、後で微調整しますので、適当な幅でいいですよ。
今まで使ったことのないプロパティを使ってみましょうか。「入力チェック」っていうプロパティがあるんですが、これも結構有効なプロパティなんですよ。
これを「はい」にすると、「試験マスター」の中身以外の試験コードの入力ができなくなります。
変な入力を避けるため、データの精度を上げるのに一役買ってくれるんです。テストごとの点数の集計をより正確に行うために「試験マスター」を作ったのに、「試験マスター」に無い試験コード入力しちゃったら、意味ないですもんね。
図8:入力チェーーーック
テーブルを保存し、データシートビューに切り替えてテストしましょう。
「試験コード」の一覧を開くと、「試験マスター」の一覧から選択することができますか?
クリックして
ぴろっ出してみてください。
図9:ぴろっとな
ご名答です・・・。「試験コード」、入力しなおしてください・・・。
一覧から選べばいいから、すぐできますよね。
適当でいいですから。適当で。
段取り悪くて
すいません。。。
図10:また入力しなおしかよ!
「成績照会サブフォーム」も手直し
久しぶりに「成績照会フォーム」を開いてみたら・・・ギャーーー!!なんか変な表示になってる!!
そうなんですよね。
「実施日」フィールド、置き換えちゃいましたからね。既に存在しないフィールドの値を表示しようとして、「ないよ?」と言っているんです。#Name?って。欧米か。
どっちにしてもここは修正しないとならないところなので、サブフォーム部分を手直ししましょう。
「成績照会フォーム」はいったん閉じてください。
図11:#Nameは、「このデータベースの中に見つからないよ」という意味の叫び
「成績照会サブフォーム」をデザインビューで開きましょう。
こういう操作はもう皆さん、慣れちゃいましたよね。いちち書かなくてもいいかな・・・。
だんだんねぇ、うっとおしがられるんですよ。「いちいち書かなくてもわかるからさっさと先に進めろよ!」とか言われることもあってねぇ。かといって「ここの説明は文章だけでいいかな」と思って図を省くと文句言われることもあって、なかなか難しいんスよ。。。いろいろ変化と抑揚をつけてみたりしてるんですけどね。。。
図12:「成績照会サブフォーム」をデザインビューで開くという流れ
と、ぐちぐちはそこまでにして、さあ、もう一息、私もがんばりますよーーー!!
データシート形式のフォームのデザインビューはこんな感じなんです。なんか変ですねぇ。私も最初はこれ見てびっくりしましたよ。「ええっ、データシートにしたはずなのに、何これ!!」って。でも、こんなもんなんです。
「実施日」テキストボックスをクリックして選択しましょう。ラベルじゃなくて、テキストボックスのほうですよ。なんか、びっくりマーク的なものが表示されてます?
図13:「実施日」テキストボックスのほうをクリックだ
右の図を参考にしていただきながら、プロパティシートを表示させてください。
図14:「実施日」テキストボックスのプロパティシートを見たい
「コントロールソース」というプロパティを探してください。
このプロパティは「データ」というタブの中にあるんですが、見つけにくい場合は右図のように「すべて」タブをクリックしてがんばって探せば、全てのプロパティを見ることができます。
コントロールソースとは、”このテキストボックスに表示されるもの”のことです。今回は、「成績テーブル」の中のフィールドのどれか、ということになりますね。
一覧から選ぶことができるようになっているので、「試験コード」フィールドを選んでください。
図15:このテキストボックスのコントロールソースは「試験コード」
ついでに、このテキストボックスの名前も、「実施日」から「試験コード」に変えておきましょう。
「実施日」のままでも問題ないのですが、ややこしいので、コントロールソースを変えたら、揃えておいたほうがいいですよ。テキストボックスの名前って、重要になることもあるんで。
図16:名前も同じにしておいたほうがいいよ
ラベルも書き換えておきましょう。”実施日”のままじゃややこしいですもんね。
図17:ラベルも書き換えておこう
やっぱり、”試験コード”がいいかな。
単純に”試験”とか、”試験名”とかでもいいかもしれません。後でまた変えてもいいですから、とりあえず”試験コード”って入力しといてください。
図18:試験コードかな
ラベルにも名前が付いてるんですよ。プロパティを見てみてください。
たぶん、今は、「実施日_ラベル」という名前が付いていると思います。
これを変更しましょう。
もう、察しが付いている方もいらっしゃるかもしれませんが、このフォームの中で、同じ名前を使うことはできないんですよ。例え、ラベルとテキストボックスという種類の違いはあっても、同じ名前は使えないので、ラベルのほうには「○○_ラベル」という名前が付くようになってるんですね。
図19:実施日じゃなくて試験コードだもんな
もう、”試験コード”という名前は、お隣のテキストボックスにつけちゃってあるんで使えないので、”試験コードラベル”とか、”試験コード_ラベル”とか、つけましょう。
コントロールの名前には、アンダースコア _ を使うことがありますが、それ以外の記号は用いないほうがいいみたいですね。記号にはそれぞれ、意味がありますからね。名前にはあんまり使わないほうがいいんですよ。
図20:試験コードのラベルってわかりやすく。
さらについでに、「試験コード」をテキストボックスからコンボボックスに変えます。
新「試験コード」テキストボックスを右クリックして、「コントロールの種類の変更」→「コンボボックス」と選択していきます。
図21:コンボに変更
コンボボックスに変更したら、いろいろコマゴマとしたプロパティの設定が必要ですね。
まず、「値集合ソース」は、言わずと知れた「試験マスター」です。
図22:これを忘れちゃなんねぇ
後は適当に、コンボボックスの見てくれの設定をしましょう。
適当でいいですよ、適当で。
図23:後は適当に
「成績照会サブフォーム」の修正は以上で終わりにします。細かい作業が続きましたねー。一息入れてください。
フォームを保存し、閉じましょう。
後で、
「成績照会フォーム」のほうを開いて確認しておいてください。
このページのまとめなど
- テーブルの追加やフィールドの変更は、後からでも可能。どこに影響が出るか理解しておこう。
- フォームの表示テストは何度も繰り返し念入りに。あれこれ使っているうちにヘンなところが見つかることも。
- ラベルやテキストボックスの”名前”にも気を配ろう。
- ”コントロールソース”とは、そのコントロールに表示するもののこと。
作成日:2009-01-09