ACC2: Code Called from OnFormat Creates Endless Formatting

Last reviewed: May 14, 1997
Article ID: Q113929
The information in this article applies to:
  • Microsoft Access version 2.0

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

  1. Open the sample database NWIND.MDB.

  2. Create a new, blank report based on the Catalog query.

  3. From the View menu, choose Sorting And Grouping.

  4. In the first Field/Expression row, select Category Name. Set the GroupHeader property to Yes.

  5. In the next Field/Expression row, select Product Name.

  6. Close the Sorting And Grouping dialog box.

  7. 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.

  8. 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.

  9. 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.
    
    

  10. Preview the report.

  11. Press CTRL+BREAK to break out of the endless formatting loop.


Keywords : kbusage RptProp
Version : 2.0
Platform : WINDOWS
Hardware : X86
Issue type : kbbug
Resolution Type : kbworkaround


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: May 14, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.