レポートにはページ番号を表示する機能があります(こちらを参照ください)が、レポート全体でのページ番号しか表示することができず、グループごとに1からページをふりなおすという機能はありません。通常はVBAで対応しますが、ここではコントロールの設定のみでなんとかしてみます。
なお、残念ながら以下の方法ではグループごとの総ページ数(Pages)を表示することはできません;-_-)
データソースとして右のようなクエリを用います。レポートにおいては「科目コード」によりグループ化し、それぞれ1ページからページを表示しようというわけです。
レポートのデザインビューです。
ここで次の3つのテキストボックスを設置します。
○その1(詳細セクション内)
名前:グループ連番
コントロールソース:=1
集計実行:グループ全体
○その2(詳細セクション内)
名前:グループ最初ページ番号
コントロールソース:=IIf([グループ連番]=1,[Page],0)
集計実行:グループ全体
○その3(ページフッター内)
名前:グループ別ページ番号
コントロールソース:[Page]-[グループ最初ページ番号]+1
集計実行:しない
さらに、科目コードのグループフッターを設置し、高さを0以外の値(なるべく小さい値でOK)とし、さらに「改ページ」プロパティを「カレントセクションの前」とします(印刷プレビューで識別できるよう、色を付けています)。
一見無用の設定ですが、こうしないとなぜか各グループの最後のページのページ番号が正確に表示されません。
印刷プレビューです。
最初のグループの最後のページです。ページ番号は4となっています。
次のページ、2番目のグループの最初のページです。ページ番号が1に戻っているのがわかります。
なお、グループフッターの設定の関係でグループヘッダーの上にちょっとだけ前のグループフッターが残りますので、グループフッターの高さは0に近い小さい値としておいた方がいいです。
最後に解説ですが、テキストボックスのうち「グループ連番」は文字通りグループ内でのレコードの連番です。「グループ最初ページ番号」はレコード連番が1の時のみページ番号と同じ値(それ以外のときは0)となりますが、グループごとに集計されていますので、結果的に「グループの最初のレコードが存在するページ番号」を常に保持します。
後は簡単な算数です。レポート全体でのページ番号(Page)からグループ最初ページ番号を差し引き、1を足せば、グループ内でのページ番号になるというわけです。