ACC2: Code Called from OnFormat Creates Endless Formatting
ID: Q113929
|
The information in this article applies to:
SYMPTOMS
Moderate: Requires basic macro, coding, and interoperability skills.
A report that calls code from its OnFormat property may never finish
formatting and may become stuck in an internal page formatting loop. This
problem may be more common in databases that have been converted from
Microsoft Access version 1.x to version 2.0.
RESOLUTION
Press CTRL+BREAK to break the internal processing loop.
With the addition of two-pass formatting for reports in Microsoft Access
version 2.0, events previously called from the OnFormat property may need
to be called from the OnPrint property instead. Or, use the KeepTogether
property in the report's Sorting And Grouping dialog box to keep groups of
records together.
Note that the sample code in the "Steps to Reproduce Problem" section later
in this article is similar to the sample code in article Q100920, "How to
Avoid Abandoned Group Headers in Reports."
STATUS
Microsoft has confirmed this to be a problem in Microsoft Access version
2.0. This problem no longer occurs in Microsoft Access version 7.0.
MORE INFORMATION
Steps to Reproduce Problem
- Open the sample database NWIND.MDB.
- Create a new, blank report based on the Catalog query.
- From the View menu, choose Sorting And Grouping.
- In the first Field/Expression row, select Category Name. Set the
GroupHeader property to Yes.
- In the next Field/Expression row, select Product Name.
- Close the Sorting And Grouping dialog box.
- Drag the Product Name field from the field list to the detail section
of the report. Set the height of the detail section to 0.25 inches.
- Drag the Category Name field from the field list to the Category Name
header section. Set the height of the header section to 0.5 inches.
- Set the Category Name header section's OnFormat property to the
following event procedure:
Sub GroupHeader3_Format (Cancel As Integer, FormatCount As Integer)
If Me.Top > 4.75 * 1440 Then
Me.MoveLayout = True
Me.NextRecord = False
Me.PrintSection = False
End If
End Sub
NOTE: To create this event procedure, click in the OnFormat property
field, then choose the Build button. In the Choose Builder dialog
box, select Code Builder. Enter the code in the module, and then
close the module.
- Preview the report.
- Press CTRL+BREAK to break out of the endless formatting loop.
Keywords : kbusage RptProp
Version : 2.0
Platform : WINDOWS
Issue type : kbbug