ACC: How to Repeat Subreport Header at Top of Page
ID: Q120907
|
The information in this article applies to:
-
Microsoft Access versions 1.0, 1.1, 2.0, 7.0, 97
SUMMARY
Moderate: Requires basic macro, coding, and interoperability skills.
This article describes how to repeat a subreport's header when the
subreport spans multiple pages.
NOTE: This method works best for one subreport. Attempting to repeat
the subreport header for multiple subreports requires a set of controls
in the page header and a flag for each subreport. Then the code must
check each flag and hide or show the appropriate sets of controls.
This code is not easy to maintain.
NOTE: This article explains a technique demonstrated in the sample
files, RptSampl.exe (for Microsoft Access for Windows 95 version 7.0)
and RptSmp97.exe (for Microsoft Access 97). For information about how
to obtain these sample files, please see the following articles in the
Microsoft Knowledge Base:
Q145777 ACC95: Microsoft Access Sample Reports Available in Download Center
Q175072 ACC97: Microsoft Access 97 Sample Reports Available in Download Center
MORE INFORMATION
The method demonstrated in the following example uses a flag in the page
header to indicate whether the subreport spans multiple pages. When the
subreport's report header is printed the flag is set to 1. When the
subreport's report footer is printed, the flag is set to 0. When the page
header is printed, if the flag is set to 1, then the subreport spans
multiple pages and the subreport's header should be repeated.
The following example demonstrates how to cause a subreport's header to be
repeated if the subreport spans multiple pages:
- Open the sample database Northwind.mdb (or NWIND.MDB in versions
1.x and 2.0).
- Create the following macro, and then save it as RepeatSubHeader:
Macro Name Condition Action
------------------------------------
MainRH SetValue
MainPH [Flag]=0 CancelEvent
SubRH SetValue
SubRF SetValue
MainRH Actions
------------------------------------------------
SetValue
Item: Reports![Categories Main Report]![Flag]
Expression: 0
SubRH Actions
------------------------------------------------
SetValue
Item: Reports![Categories Main Report]![Flag]
Expression: 1
SubRF Actions
------------------------------------------------
SetValue
Item: Reports![Categories Main Report]![Flag]
Expression: 0
- Create a new report called Products Sub Report based on the Products
table.
- Place the following three text box controls in the new report's
detail section:
Text Box:
ControlName: ProductID
ControlSource: ProductID
Text Box:
ControlName: CategoryID
ControlSource: CategoryID
Text Box:
ControlName: ProductName
ControlSource: ProductName
NOTE: In versions 1.x and 2.0, type a space in Product ID,
Category ID, and Product Name.
- On the View menu, click Report Header/Footer.
- Place the following three labels in the report's report header
section:
Label:
ControlName: Text1
Caption: ProductID
Label:
ControlName: Text2
Caption: CategoryID
Label:
ControlName: Text3
Caption: ProductName
- Set the report header section's OnPrint property to the following
macro:
RepeatSubHeader.SubRH
- Set the report footer section's OnFormat property to the following
macro:
RepeatSubHeader.SubRF
- Create a new report called Categories Main Report based on the
Categories table.
- Copy the controls from the Product Sub Report report's report header
section and paste them into the page header section of the Categories
Main Report report.
- Place the following text box in the Categories Main Report report's
page header section:
Text Box:
ControlName: Flag
Visible: No
- Place the following three text boxes in the Categories Main Report
report's detail section:
Text Box:
ControlName: CategoryID
ControlSource: CategoryID
Text Box:
ControlName: CategoryName
ControlSource: CategoryName
Text Box:
ControlName: Description
ControlSource: Description
- Embed the Products Sub Report report in the Categories Main Report
report by dragging the Products Sub Report report from the Database
window to the detail section of the Categories Main Report report.
- On the View menu, click Report Header/Footer to add a report
header and footer to the main report. If you do not want a main
report header or footer, set the header or footer section's height
to 0.
- Set the OnFormat property of the report header section of the
Categories Main Report report to the following macro:
RepeatSubHeader.MainRH
- Set the OnPrint property of the page header section of the Categories
Main Report report to the following macro:
RepeatSubHeader.MainPH
- Preview or print the report. Note that the subreport's header
information is repeated when the subreport spans multiple pages.
Displaying Main Report Information on Every Page
The example above assumes that you do not want anything except the
subreport header to be printed in the main report's page header. If you do
want to print other information, you will need to hide and unhide each
subreport header control in the page header. Change the MainPH macro in
step 2 above to:
Macro Name Condition Action
-------------------------------------------------
MainPH [Flag]=0 SetValue
Item: [Text1].visible
Expression: False
... SetValue
Item: [Text2].visible
Expression: False
... SetValue
Item: [Text3].visible
Expression: False
[Flag]=1 SetValue
Item: [Text1].visible
Expression: True
... SetValue
Item: [Text2].visible
Expression: True
... SetValue
Item: [Text3].visible
Expression: True
REFERENCES
For more information about events during printing, type "Print Events" in
the Office Assistant, click Search, and then click to view "Print Event."
For more information about report OnFormat and OnPrint properties, search
on "OnFormat," and "OnPrint," using the Microsoft Access 97 Help Index.
Keywords : kbusage RptSub
Version : 1.0 1.1 2.0 7.0 97
Platform : WINDOWS
Issue type : kbhowto