サブフォームの仕組みを理解しよう(続き)
サブフォーム部分の集計 (Access2007新機能)
せっかくですからもうひとつ、オマケのお話をいたします。
今回、サブフォーム部分はデータシート形式で表示していますよね。データシートは列幅の変更や文字寄せなど手軽に変えることができる、というところは今まで見ていただいた通りなんですが、それ以外にもうひとつ、Access2007からの新機能を使うことができるんです。
「集計」機能です。これ、かなり画期的な、かなり珍しい機能です。Access2007の新機能、うまく使っていきたいですよね。
今回は、サブフォーム部分の「点数」の合計か平均点を出してみようと思います。
平均点がいいかなぁ。
右図を参考に、「点数」の列を選択した状態で(点数の列のどこかにカーソルがあればOK)、リボンの中の「集計」をクリックします。
シグママークのボタンですね。このマーク、前にどっかで、見ましたよね・・・どこだっけ?
お前が聞くなって?ま、まあいいじゃありませんか、たまにはちょっとふざけたって。
そうそう。クエリですクエリ。前にクエリ作ったとき、こんな感じのマーク、出てきましたよね。
舞台が異なるだけで、クエリの「集計」と似たようなもんなんですよ。
図1:「点数」を集計するんだな
データシートの一番下に、”集計”という行が表示されます。ここに集計が表示されます。
「点数」列の集計行をクリックして、一覧から「平均」を選びます。
図2:平均を計算しまーす
この学生さんが今まで受けたテストの点数の平均が表示されます。
右図の例では、ちゃんと割り切れていますが、平均ですから、割り切れない場合もあります。
割り切れない場合は・・・
図24:図の説明。
さっきもちょっと出てきましたが、####という表示になります。要するに、割り切れず端数が出て、列幅が狭くて表示しきれない状態ってわけです。
(右図は1行追加してわざと割り切れなくした状態なんですが)
こんな風になっちゃっても慌てない慌てない。
「点数」の列幅を広げれば、ちゃんと表示されますよ。
図3:ギャー!変な表示になったわ!もう何もかもおしまいだわ!
小数点以下の表示桁数はどんなに割り切れなくても12桁くらいまでしか表示されないので、ちょっと広げておけば、もう####にならずに済みますよ。内部的には割り切れずにずっと小数点以下の桁が続く値でも、表示できる桁数には限りがあるんです。
え?列幅を広げるのってどうするんだったけって?
んもー、知りません!!後で
似たような操作の説明が出てきますから、それまで###で我慢してください!
参考までに・・・
「やっぱり、集計行は要らないや」というハナシになった場合は、もう一度、リボンの「集計」をクリックすれば、集計行は消えてなくなります。で、またクリックすれば出てくる、という仕組みになってます。折りたたんだり引っ張り出したりって感じですね。
必要に応じて引っ張り出し、普段は見えなくしておく、って手もアリかも。
図4:集計行、出たり引っ込んだり。
「既定値」プロパティ、元に戻す?
以下はオマケのオマケの話です。読み飛ばして次のページに進んでいただいても問題ないですよ。
さっきもちょっと触れたんですが、新規入力行の「実施日」、やっぱり無いほうがいいかなぁと思うんですよ。
皆さんはどう思いますか?
なんか、「あれ?空白行がある、何か入力しなきゃ」って勘違いして、余計な入力をしちゃいそうな気がするんですよ・・・。まあ、これは私の主観なので、「え?何のこと?何の話してんの?」って思う人もいるかもしれませんけど・・・。
「実施日」に設定した既定値のプロパティ、外しておこうかなと思います。
図5:図の説明。
「成績照会フォーム」を閉じ、「成績テーブル」をデザインビューで開きます。デザインビューって何だっけ、ですって?んもーーーー
ナビゲーションウィンドウから、「成績テーブル」を、右クリックして・・・
図6:「成績テーブル」をデザインビューで開くのだ
このテーブルを作ったのが、もう何千年も過去のことのようだ・・・。
「実施日」のフィールドプロパティを表示させ、「既定値」プロパティに入力したDate関数を削除します。
え?こんな画面、記憶にない?
思い出してくださいーーーーーさっき自分で入力した関数でしょおおおおーーー
図7:「既定値」プロパティ欄のDate()を消して空欄にしよう
「既定値」プロパティを空欄にしたら、上書き保存して、テーブルを閉じます。
図8:元に戻ったってことか
「成績照会フォーム」を開きます。単に「開く」ってときは、フォームビューですね。
ナビゲーションウィンドウから「成績照会フォーム」をダブルクリックすればOKですよ。
「実施日」の既定値、表示されなくなっていますか?
え?集計行の上が1行空いてるって?そりゃそうですよ、それ、新規入力行ですからね。
データシートの場合は、常に一番下に新規入力行があり、ここにデータ追加入力します。
集計行はその下に表示されるんですね。
図9:新規入力行に今日の日付が表示されなくなったでしょ?
既定値プロパティがなくなったので、「実施日」には手書きで日付を入力します。
1件、追加してみましょう。そうだなぁ、翌月の、国語のテストの点数でも入力してみましょうか。
サブフォームやデータシート形式のフォームに慣れるのが目的なので、入力しながら雰囲気を掴んでくださいね。
図10:データシートの扱い、そろそろ慣れてきました?
データシートでレコードのコピー&貼り付け
翌月、またテストが実施されて、採点が終わって、5教科分の点数を入力するわけなんですが、めんどくさいなぁ・・・なんて、思ったりする人もいるかもしれませんね。
オマケのオマケの操作ですが、レコードをコピー&貼り付けしてみましょう。
リレーショナルデータベースではあんまりやらない操作なんですけどね。データシート表示だとこういう操作も簡単にできるので、この辺で体験しておこうと思います。
ただ、こういう操作をやると、Excelと区別が付かなくなって混同される方も多いので、一呼吸置いてから始めましょう。
データベースは表計算ソフトとは違うってお話は、何度かしましたよね。「縦横に罫線が引かれた1枚の表」ではなくて、「データが縦横に意味のある並び方で整列したもの」を表と呼びます。データベースの世界では。だから、データシートの状態で、データが縦横にくっついて表の形を成していたとしても、それはたまたまそのように整列しているだけで、各レコードが常にくっついて1枚の表になっているわけではないんです。
Accessはその辺のところをうまーくまとめてくれちゃうので、Excelと区別が付かずExcelと同じような使い方をしてしまう人が多いんですが、内部の仕組みはぜんぜん違うので、「表の形になっていても、Excelとは違うんだ」ということを常に意識したほうがいいんですよ。
データシートを使っていると、だんだんExcelと区別が付かなくなって、「セルに関数を入力するにはどうしたらいいのかな?」なんて考えてしまう人もいるかもしれませんが、今見えているのはExcelのセルじゃなくて、データベースのデータを表の形で見ているだけなので、Excelのことは忘れて、操作してみてください。
では、参りましょう。既に入力済みの1月のテストのレコードをコピーして、貼り付け、2月分の入力をちょっとだけ楽します。
まず、コピー元を選択します。
右図を参考にしていただき、まず、一番上のレコードのレコードセレクタ部分にマウスポインタを合わせます。ポインタが右向きの黒矢印になります。
この形を維持しつつ、そっと真下にドラッグします。
5レコード分選択できたら、キーボードから[Ctrl]キーを押しながら[C]キーを押します
図11:コピー元のレコードの選択して、コピー
新規入力行のレコードセレクタをクリックします。
ここが、コピー先ってわけですね
図12:コピー先をクリック
確認のメッセージが表示されます。
「5件のレコードを貼り付けようとしています。レコードを貼り付けますか?」
はい、貼り付けます、というわけで、「はい」ボタンをクリックしてください。
図13:律儀ね
レコードが貼り付いたら、「実施日」と「点数」をそれぞれ書き換えて、2月のテストの結果の入力は完了です。
このフォームの基になっている「成績テーブル」は、オートナンバー型のフィールドが主キーになっているので、仮に同じ月のテストの結果を二重に入力してしまっても、Accessはチェックしてくれません。ダブって入力しちゃわないよう気をつけないといけませんね。
図14:コピーしたデータを適時書き換えよう
フィルタ
何ヶ月分もテストの点数が蓄積されていったと仮定して・・・「この学生の、国語の点数だけ見たいんだけど」ってことになったら、フィルタで絞り込みましょうか。
右の図を参考にしていただきながら、フィルタ機能を使って「教科番号」を絞り込んでみましょう。
図15:この順番でクリックしときゃ間違いねぇだ
ほら、絞り込まれましたよ。平均点も変わってますよね。
図16:ほーら
絞込みをやめたいときは、リボンの中の「フィルタの実行」ボタンをクリックしてオフにすれば、また全てのデータが表示されます。
図17:フィルタ解除!
(参考)レコード移動ボタンの右側でも、フィルタの実行/解除が可能です。
ここも、慣れると結構、使い勝手がよいですよ。
一時的な絞込みやデータのチェックなどのときにうまく活用するといい感じです。
図18:この部分もなかなか使えるぞ
並べ替えもやってみましょう。
「教科番号」の順で並べ替えると、絞り込まなくても各教科ごとの状況が多少はわかりやすくなりますね。
並び順は、たぶん、右図のようになると思います。
表面に表示されているのは漢字なので、漢字の場合は、代表的な音読みで並び変わるみたいですね。
えい、こく、さん、しゃ、り の順、ってとこでしょうか。
他にも、「点数」を降順▼で並び替えれば、その学生さんの最高得点を知ることができますね。
図19:教科名で並べ替えるぞ
並べ替えを解除したいときは、リボンの中のこのボタンをクリックしますよ。消しゴムでAZという文字を消しているような絵柄、探してみてくださいね。
図20:消しゴム
ここで作業は一段落。「成績照会フォーム」を閉じましょう。
閉じるときに・・・なんかメッセージ出てきますか?
並べ替えをしたりいろいろやりましたんで、たぶん、保存しますか?みたいなメッセージが出ると思います。
このまま「はい」ボタンをクリックしましょう。
図21:保存?するする
列名の変更
こうなると、「教科番号」って列名、あんまり適切じゃないかなぁって思うんですが・・・「教科名」って列名のほうがわかりやすそうですよね。
めったに開くことのない「成績照会サブフォーム」のほうを、デザインビューで開きましょう。
右図を参考にしていただきながら、「教科番号」のラベルの中身を書き換えてください。
図22:ラベルだよ
書き換わりました?
そしたら、フォームを上書き保存して、フォームビューに切り替えて確認しましょう。
「成績照会サブフォーム」をこのままフォームビューに切り替えてみてもよいですし、あるいは、この「成績照会サブフォーム」は閉じて、「成績照会フォーム」を(親のほう)開いてチェックしてもいいかも、です。
図23:ラベルを書き換えるんだよ
右図は「成績照会フォーム」(親)を開いた状態なんですが、列名、変わってますよね。
フィールド名を変えたのではなくて、このフォームの見出し部分を変えただけ、ってことになります。
ではでは、フォームを閉じて、一息つきましょう。
次は、入力した成績データを使って、クエリを作りますよ。
図24:かわってるー
このページのまとめなど
- Access2007からの新機能「データシートで集計」。うまく活用していこう。
- 使い方に決まりはない。たくさん用意されているプロパティを利用して、理想に近いフォームを目指そう。
- データシートは手軽だけど、Excelとはぜんぜん違うもの。その辺意識して使おう。
作成日:2009-01-09