レポートのテキストボックスには集計実行オプションがあり、コントロールソースを「=1」とすればグループごとに、あるいはレポート全体でレコードに連番をふることができます。しかし集計実行オプションにはページごとに集計する機能がないためページごとに連番をふるとなるとちょっと厄介で、通常はVBAで処理します。
ここでは実験的にVBAを使わず連番をふる方法を示します。ただし設定がやや面倒なため実用性はいまひとつで、素直にVBAに頼ったほうが簡単かと思われます。
右のテーブルをレコードソースとするものとします。
レポートデザインでまずグループ化を設定します。テーブルにはグループ化の対象となりそうな列(フィールド)はありませんが、ここではフィールド名ではなく「式」を選択します。
「"ダミー"」と入力しOKをクリックします。文字はなんでもいいですが、単に文字のみ入力するとプレビューを開くたびにパラメータの入力を求められますので、ダブルクオーテーションでくくります。
本題とは関係ありませんが一応並べ替えの指定しておきます。
また、詳細セクションとの区別のためグループヘッダーには色をつけています。
さて、グループヘッダーのオプションを開き、「セクション繰り返し」の値を「はい」とします。
そして次の3つのテキストボックスを設置します。
○その1(グループヘッダー内)
名前:ページ初連番
コントロールソース:=[グループ内連番]
集計実行:しない
○その2(詳細セクション内)
名前:グループ内連番
コントロールソース:=1
集計実行:グループ全体
○その3(詳細セクション内)
名前:ページ内連番
コントロールソース:[グループ内連番]-[ページ初連番]+1
集計実行:しない
印刷プレビューです。「ページ内連番」がページごとの連番を表示しています。
このページでは印刷時拡張が効いてレコード数が他のページと違っていますが…
次のページでも狂いなくページごとの連番がふられているのがわかります。
さて、上記のやり方ではグループヘッダーのセクション繰り返しを有効にすることにより毎ページに表示させ、そこにページの最初のグループ内連番を保持するコントロールを置き、詳細セクションから参照するという手法をとっています。しかし、ページヘッダーを用いてもうまくいきません。ページヘッダーにコントロールを置いてもページの最初のグループ内連番を表示するものの、詳細セクションからの参照がうまくいかないからです(ページ内連番は常に1と表示されてしまいます)。
なお、上記の方法により、ページの最初のレコード(とそうでないレコード)が識別できることがわかります。