| <HOME <お願い事項 <Access2000 TOP <Access97 TOP <サイト内検索 | ||
| MS-Access2002チョ〜入門部屋>基本をマスターしよう | ||
そしたら、レポートならではの設定などをいくつか見てみましょうか。
さっき、レポートウィザードの途中で、「グループレベル」とか「並べ替え」とか、指定しましたよね。
あれっていうのは、レポート作っちゃってからもいろいろ変えられることは変えられるんです。
これはですねぇ。ツールバーの「並べ替え/グループ化」っていうツールボタンをクリックします。

こんな感じの画面が出てくるので、ここで設定するわけです。

まず、グループ化に使われているフィールドは、左端のセレクタ部分を見るとなんかぐちゃっとしたマークがついてます。
別のフィールドごとのグループ化にしたい場合は、「部署名」のフィールドを別のフィールドに選びなおします。

また、このセレクタ部分をクリックしてDeleteキーを押せば、グループ化の設定がなくなることになります。
グループ化をやめて平らなレポートにしたいときはここで操作します。
(すでに「部署名ヘッダー」というセクションができてるので、このセクションを削除してもいいかどうかというメッセージが出てきますので、はいと答えると、なくなります)
入社年月日ごとの並べ替えじゃなくて、別の並べ替えにしたいときもこのウィンドウで操作します。
さっきもちらっと触れましたが、レポートはレポートの中でちゃんと並べ替えの指定をしないと、レポートのデザインによってはレコードの並び順が不規則になる場合もあります。いちおうきちんと指定をする癖をつけましょう。
ついでに、部署名のところをクリックしている間に「グループプロパティ」っていうところを見ると、グループヘッダーは「はい」だけどグループフッターは「いいえ」になってますよね。だから、グループフッターがなかったんですが、ここを調整することでフッターを出すことができます。

出してみましょう。グループフッター」をはいにしましょう。多分、ちょっとレポートのデザインに変化が生じると思います。
用が済んだらこのウィンドウは右上の「×」ボタンで閉じちゃいましょう。
そしたら、「部署名フッター」のところに、テキストボックスをひとつ作りましょうか。
フォームのときと要領は同じです。ツールボックスから「テキストボックス」のボタンをクリックして、その後「部署名フッター」の中をどこかクリックします。

で、このテキストボックスの「コントロールソース」プロパティに、

=Count(*)
って書いてやります。全部半角です。
これは、フォームとかレポートとかでよく使う「Count関数」ってやつなんですが、「表示されるべきレコードの件数」を数えるというお手軽な関数です。まあ詳しいことはヘルプを探してみてください。
で、レポートフッターとかにこういうテキストボックスを作れば全件数えます。でも今回はグループフッターに作りましたんで、部署ごとの人数を数えてくれるはずなんですね。
ただし、Count関数はページフッターでは、動きません。エラーになります。これにはちょっと意味があるんですけど、もうちょっとレポートについて知識を深めてから散策したほうがよいかもしれませんので、今回は「動かない」とだけお話を・・・。
このままじゃテキストボックスやラベルが不恰好なので、位置や大きさやラベルの中の文字などを整えてみてください。
あと、「部署名フッター」も広がりすぎてると思うんで、高さを調節して狭めておいたほうがいいかもしれません。
あとは・・・そうだな、一番下の「ページフッター」ってところをちょっと見てみましょうか。
テキストボックスがふたつあって、コントロールソースに式が入力してありますよね。

=Now() っていうのは、Now関数っていう関数です。今現在の日付と時刻をプリントする関数ですね。
これで、印刷した日付と時間がわかるわけです。
ただ、標準では「書式プロパティ」で「日付の部分だけの表示」になってるかもしれません。
時刻まで表示させたいなら、「日付(標準)」っていうプロパティにするか、自分で yyyy/mm/dd hh:ss って書式プロパティのところに入力するか、どっちかですね。
曜日まで表示させたい場合は、yyyy/mm/dd aaa hh:ss かな。yyyy/mm/dd aaaa hh:ss でもいいかもしれません。yyyy/mm/dd (aaa) hh:ss とか・・・。aaaっていうのは、日付とかの書式で今日の曜日を返す決まり文字なので、こういうときけっこう使えると思いますよ。
右側の[Page]と[Pages]っていうのはそれぞれ「現在のページ数」と「総ページ数」をプリントする決まり文句です。
レポートでしか使わないと思いますけれど、これはもうこのまま覚えといたほうがいいかもしれないですね。
さっき、フォームのフィルタのところのお話でもちょっと出てきましたが、式を書くときやたらとダブルコーテーションとかアンパサンドとか出てくるんですよね。アンパサンドってのは & ←これです。
こういうのは少しずつ慣れてったほうがいいと思いますが、ダブルコーテーションは「任意の文字列」、半角の鍵カッコは「オブジェクト名、すでに存在しているものの名前」、&は「文字と文字をつなぐ」という意味があります。
=[Page] & "/" & [Pages] & " ページ"
これはもともと、ページ数と総ページ数を表示したいだけなんで
=[Page][Pages]
だけでいいはずなんですが、これだと式として成立しません。エラーになります。
[Pages]にも=イコールが必要なんです。式としては。でもイコールを二つ入力するわけにもいかないんです。
そこで、PageとPagesを、&でつなげて、イコールが1個でもつながるようにします。
=[Page]&[Pages]
でもこれだと、式としてはエラーにはなりませんけど、総ページ数が1で現在のページ数も1の場合、11ってつながって出ちゃいます。まるで11ページみたいです。総ページ数が287ページで現在のページ数が15ページ目だとすると、15287になっちゃいます。わけがわかりません。
そこで、間に何か区切り記号を入れたいと思うんですけど・・・・1/1とかいうのが、一般的かな。間にスラッシュを。。。
と、どうしたらいいんでしょう。
=[Page]&/[Pages]
???これじゃ式として成立しません。スラッシュという文字をそのまま表示してほしいんです。割り算の記号じゃなくて・・。
そういう場合は必ずダブルコーテーションで囲みます。スラッシュ記号を出したいのではなくて、スラッシュという文字の形をそのまま印字してほしいので、
=[Page]&"/"&[Pages]
と、こうなります。ちゃんと&で結んで、つながるようにしてあげれば、構文エラーにもならないです。
で、1/1だけじゃ味気ないので、後ろに「1/1ページ」ってつくように
=[Page]&"/"&[Pages]&"ページ"
ってつなげてるわけです。
でも、「1/1ページ」ってくっついちゃうんじゃなくて、「1/1
ページ」って、ちょっとだけ隙間をあけたいなーと思って・・・
=[Page]&"/"&[Pages]&" ページ"
「ページ」を半角分ずらして入力してます。
後は適当に式として見やすいように、&の両側にスペースあけたりしてるだけですね。
なれないと、ダブルコーテーションが何でついてるのかわからなくて省いちゃったり、&の意味がわからなくて省いちゃったり余分に入れちゃったりして式のエラーになっちゃう人もいるんですが、ひとつひとつ意味があるのです。
ダブルコーテーションやアンパサンドの意味と使い方を抑えておくと、いろいろ役立ちますよ。
機会があったらまた詳しくお話していきますね。
MS-Accessには、厳密には「罫線」っていうものはありません。
レポートに線を引きたい場合は、図形の「直線」を配置します。
このレポートよく見ると、濃い青と薄めのグレーの「罫線」が出るようになってるんですが、これらもみんな、「直線」を引いた後、太さや色を調節しているだけなんです。

わたしは、「詳細セクション」の下側に、細い直線を一本引いてみました。
まっすぐ引くのが難しいところなんですが・・・。ほかの罫線とも幅を合わせて、1行ごとに線が出るようにしてみました。
こんな感じかな・・・。

見やすいレポートをきちっと作るのは、けっこう重労働です。
多分、異国の地ではあんまりこういう「印刷物」って重要視されてないんじゃないかなって思います。
とくに、縦横にきちっと線を引いて印刷するとかって、あんまり需要がないみたいですね。
でも、日本でデータベースっていったら、やっぱりいろいろと帳票類も作っていかないとならないです。
大変ですけど、便利な機能やプロパティはいっぱいありますから、いろいろ研究してってみてください。
じゃあ、もうひとつだけ・・・。
「部署ごとに改ページする」場合のプロパティです。

「部署名フッター」(多分グループフッター1っていう名前だと思う)のプロパティの中の「改ページ」を、「カレントセクションの後(部署名フッターを印刷した後改ページする)という設定にしてみましょう。
プレビューで見てみると、多分、グループごとに改ページされると思うんですけどね。どうでしょう。

ここまでくると、「部員が何人でも、10行分罫線だけ印刷したい」っていう思いが、出てきたり・・・します?
これはですねぇ。基本的には、無理です。
だってレポートって、「1行分のデザインを、テーブルやクエリのデータ件数分繰り返して印刷する」ものでしょう?
テーブルやクエリにデータがなければ、そこで印刷は終わりです。罫線だけ出すなんてことは、できないです。
「罫線だけ出したい」場合、かなり細工をしないとならないのですが・・・。
方向性としては、
★基のテーブルまたはクエリに、ぴったり10件(あるいは10の倍数)になるよう、空のレコードを追加しておく
★レコードがなくても空回り印刷をさせるような処理を、Visual
Basic for Applicationを駆使して作る
の、どっちかってことになります。
細かいやり方はそれぞれまたいろいろ考えられますけども、どっちにしてもかなり工夫が必要です。
これは・・・もうちょっと慣れてから考えたほうがいいかもわかりません。難しいです。
| |