レポートで、各グループに配布するような印刷物を両面印刷で作るときに、用紙の表面と裏面が別々のグループになってしまい具合が悪い、ということが起こります。
対策として、グループフッターが存在するページが奇数ページ(レポート全体でみた場合のページ番号が奇数であるページ。以下同様)であるとき、改ページコントロールによりさらに1ページ増やすという方法が考えられますので、以下に例を示します。
グループごとのページ表示など、ページの表示については一切考慮してませんのであしからず_ _)
用いるデータはこのようなクエリです。
このクエリをレコードソースとするA5版の簡単なレポートです。
グループ番号をグループヘッダー(ピンクの部分)とし、詳細セクションでそれぞれのグループに属する会員を表示しています。
さて、デザインビューを操作してみます。
まずグループフッターを設けます。プロパティについては名前を「グループフッター1」、改ページを「カレントセクションの後」とします。
ただしこれだけでは2つのグループが別々のページに分離されるだけで、両面印刷の表裏になることは避けられません。
そこでグループフッター内に改ページコントロールを置きます。名前は「改ページ」とします。
なるべくデザインに影響を与えないよう、改ページコントロールはグループフッター内の左上に置き、グループフッター自体の高さも極力低くします。
ちなみにページヘッダーは参考用ですので必要はありません。
次に、フォームモジュールに以下のようなコードを記入します。
Option Compare Database Private Sub グループフッター1_Format(Cancel As Integer, FormatCount As Integer) If Me.Page Mod 2 = 1 Then Me.改ページ.Visible = True Else Me.改ページ.Visible = False End If End Sub
グループフッターが奇数ページにあるなら改ページを有効に、偶数なら無効にしています。
これにより結果的にすべてのグループのページ数が偶数となります。
再度印刷プレビューを見てみます。
最初のグループ「ぞうさんチーム」の最後のレコードと、グループヘッダーの始まり(直ちに改ページされているので見えない)は3ページ目(奇数)にあります。
次の4ページ目を見ると、改ページコントロールのはたらきによりグループフッター(改ページ後の部分)が表示されています。グループ全体が偶数ページになっていることがわかります。
2番目のグループ「キリンさんチーム」の最後のページは8ページ目(偶数)にありますので、グループフッター内での改ページは行われません。グループのページ数はやはり偶数ページ(8-4=4)です。
さて、お気づきのように上記の方法ではグループごとのページ数を直接数えてはいません。当該グループの末尾が偶数ページであり、かつ、前のグループの末尾も偶数ページなのだからグループのページ数は偶数であるはずだ、という理屈です。
その辺りに不安を覚える場合は、何らかのチェックを加えることも一考すべきかと思います。グループごとにページ数をカウントするのも難しくないと思いますし、より簡単な方法としてはグループヘッダーが偶数ページになっていないかのチェックを加える方法も考えられます。後者の具体的な例として(超適当でスミマセンが)上記のコードに次のようなコード(グループヘッダーの名前が「グループヘッダー0」の場合)を加えておき、プレビューで一度最終ページまで飛んでみることでチェックできます。
Private Sub グループヘッダー0_Format(Cancel As Integer, FormatCount As Integer) If Me.Page Mod 2 = 0 Then MsgBox (Me.Page & "ページ目からのグループ開始が発見されました") End End If End Sub
末尾になりますが、改ページにより完全に空白のページが生じる場合に、プリンタの設定(空白ページを印刷しない)により当該ページがスキップされてしまうことがありますのでご注意ください。