レポートでグループ毎にページ番号とグループ内のページ数を表示する方法

レポートの機能を使って、グループ毎にページ番号とページ数を印刷することができます。レポートでは[Pages]を使って全体のページ数を各ページに印刷することができますが、この時Accessは全ページを2回スキャンしています。これを利用して1回目のスキャンで各グループのページ数を配列に保存しておき、2回目のスキャンで配列からページ数を取り出してコントロールに値をセットするのです。

具体的には、レポートに以下のプロシージャを記述してください。そうすれば[ページ数表示]というコントロールに表示されます。注意点として[Pages]をダミーで配置させておくことです。[ページ数表示]は、ページヘッダ・ページフッタどちらでもOKです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Compare Database
Option Explicit
 
Dim gps(1000) As Integer 'グループ毎のページ数を保存する配列
Dim i As Integer
 
Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)
i = 0
End Sub
 
Private Sub グループフッター0_Format(Cancel As Integer, FormatCount As Integer)
If FormatCount = 1 Then
If Pages = 0 Then gps(i) = Page
i = i + 1
Page = 0
End If
End Sub
 
Private Sub ページヘッダー_Format(Cancel As Integer, FormatCount As Integer)
If Pages > 0 Then ページ表示 = Page & "/" & gps(i)
End Sub