For each record, the section's Format event runs first. In this event,
Access calculates how much space is needed to fit any controls that
CanGrow or CanShrink, and figure out how to manage other properties of the
section such as Force New Page and Keep Together. It is then able to
determine whether the section will actually fit on the page. If it cannot
fit, Access aborts the event, prints the current page without this record,
and then runs the Format event *again* to calculate how to place the
record on the new page. The report's runtime properties NextRecord,
MoveLayout, and PrintSection are also involved in this process.
Once Access has a solution for the record, the section's Print event fires
when the record is actually placed on the page. This event is too late to
add text that may need extra/less space (to shrink or grow), because
that's already been calculated. However the event is much less likely to
run multiple times (because a solution has already been plotted.) It can
run multiple times for the same record if the report's NextRecord property
is set to False.
Both events provide a counter for how many times it ran (the FormatCount
and PrintCount arguments), and there is also a Retreat event to indicate
that Access is back-tracking.
In general, use the Format event of the section to add text to an unbound
control, because it can then shrink or grow.
If you want to add text or graphics to a specific location on the page
(regardless of how the records are placed), use the Page event of the
report.
The report's Top property lets you know how far down the page this section
is falling, and you can read that in Format or Print. It is measured in
twips, where 1440 twips = 1 inch.
Do not use these events to programmatically accumulate totals over several
pages, nor to repeat the sections multiple times for some records. If the
user views/prints only some pages of the report, the events for the
skipped pages may not fire, so the totals/layout can be wrong.