成績処理12


成績処理の連載も最終回となります。

VBAコードを示す前に、3つの印刷例を見てください。
左は何も制御しないで印刷した例、10件のレコードを印刷して終了しています。
中央は、10件目のレコードが連続して印刷されている例です。
右は、最終的に目指している形です。

「印刷されている」と思うと分かりにくいのですが、中央の例の11行目以降のデータが「見えなければ」目指す形になると考えればよいのです。
では、左の例と中央の例の違いは何かというと、前に紹介したNextRecordプロパティの違いです。通常の印刷では、詳細セクションが印刷(Format)される前にNextRecordプロパティがTrueに設定されます。最終10件目で次(Next)の11件目は無いと判断するわけです。従って、最終10件目になったら、印刷の前にNextRecordプロパティをFalseにすれば、レコード終了していないと判断され、10件目のまま印刷が続くという仕組みです。

レコード件数は、T_seitoテーブルのレコード数です。(変数rcとします。)
最大何行まで印刷するかは、各学校のクラス在籍数や、用紙のサイズ、フォントサイズや見栄え等も考慮しながら決めないといけませんが、B4サイズ横であれば40~45名程度は印刷できるでしょう。仮に45としておきます。(変数gmaxとします)
現在行は前回示した(変数i)を使います。
i < rc       普通に印刷
i = rc   NextRecord はFalse
i < gmax  NextRecord はFalse  テキストボックスのVisibleはFalse
コードを示します。(前のコードも含みます)

帳票設計はこだわりをもってやりましょう。縦罫線(直線)は大変ですが頑張ってデザインしてください。あまり細かい作業が好きではない方にお気軽縦罫線の設定方法を最後に示し、この連載を終了します。

お気軽罫線ですが、直接レポートデザイン画面で1つ1つ直線を描くのではなく、OLEオブジェクトとして貼りつける方法です。まずワードで必要な表を作成します。表のプロパティで高さやセル幅は指定します。これをPDFファイルとして保存して開きます。SnippingToolで縦罫線の部分だけ切り取り、レポートデザイン画面で詳細セクションに貼りつけます。その上にデータ用テキストボックスを配置していきます。OLEオブジェクトが前面にあるとデータが隠れてしまうので、最背面になるようにします。横罫線は簡単ですから直線を描けば無事縦横罫線の完成です。同様に、ヘッダー部分の文字も含めたデザインもワード等で作成したものを貼り付ければ、慣れないデザイン画面で苦労することもありません。

, ,