Microsoft KB Archive/119655

= ACC: How to Print Group Footer at Specific Location =

Article ID: 119655

Article Last Modified on 1/19/2007

-

APPLIES TO


 * Microsoft Access 1.0 Standard Edition
 * Microsoft Access 1.1 Standard Edition
 * Microsoft Access 2.0 Standard Edition
 * Microsoft Access 95 Standard Edition
 * Microsoft Access 97 Standard Edition

-



This article was previously published under Q119655





SUMMARY
Moderate: Requires basic macro, coding, and interoperability skills.

This article describes how to print a report's group footer information at a specific place on the page. This can be useful when you are printing reports to preprinted forms. Although you cannot do this using the group footer's property settings, you can use any of the following three methods:


 * Place the information in the report's page footer, which is always printed at a fixed location.
 * Set the report properties for the footer section.
 * Set the report properties for the detail section.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

NOTE: Visual Basic for Applications is called Access Basic in Microsoft Access versions 1.0 and 2.0. For more information about Access Basic, please refer to the "Building Applications" manual.



Method 1: Using the Page Footer
The page footer is always printed at a fixed location on the report's page, just above the bottom margin. For example, if your report has a bottom margin of 1 inch and the height of the page footer is 1 inch, the page footer begins 2 inches from the bottom of the page, or 9 inches from the top of the page (for an 11 inch long page). Placing the group footer controls in the page footer causes them to be printed at the page footer's fixed location on the page.

NOTE: You cannot use aggregate functions in a control in a page footer. If you need to use aggregate controls in your footer, please see the following Microsoft Knowledge Base article:

129096 ACC: How to Sum a Calculation in a Report

Method 2: Setting Report Properties for the Footer Section
This method involves using the MoveLayout, PrintSection, and NextRecord report properties to move the group footer to a specific printing location on the page. With this method, you are not actually specifying the group footer's coordinates on the page, but moving the group footer to various existing printing locations on the report page.

To ensure that the group footer is printed where you want it to be, you must consider the height of each section of the report. Since you cannot specify the location of the group footer section (or any other section) with a property setting, you must use the MoveLayout property to move the section to the next available printing location. For example, if the group footer section's height is 0.5 inches and the Top property (which specifies how far from the top of the report the section is printed) is set to 3.75 inches, then the MoveLayout property moves the group footer section to be printed in the area from 3.75 inches to 4.25 inches from the top of the report (a total of 0.5 inches).

The following example demonstrates how to print the group footer at a specific place on the page by adjusting the section heights, and by using a sample user-defined function called SetGrpFtrLoc that tests to see if the Top property is set to less than the GrpFtrLoc setting (the location where the group footer will be printed). If it is, the function moves the group footer section to the next printing location. If not, it does not move the group footer.

CAUTION: Following the steps in this example will modify the sample database Northwind.mdb (or NWIND.MDB in versions 2.0 or earlier). You may want to back up the Northwind.MDB file, or perform these steps on a copy of the Northwind database.

 Open the sample database Northwind.mdb.  Create a new module and enter the following line in the Declarations section of the module if it is not already there:

     Option Explicit

Enter the following function in the module:

Function SetGrpFtrLoc(Rpt as Report, GrpFtrLoc as Double) GrpFtrLoc=GrpFtrLoc*1440       'Convert from inches to twips.

If Rpt.top < GrpFtrLoc Then    'Not at location yet, so         Rpt.movelayout = True        'move to next print location. Rpt.nextrecord = False      'Do not go to next record. Rpt.printsection = False    'Do not print the section. End If

End Function  Save and then close the module. Open the Catalog report in Design view.  Change the Category Name header section's Height property to:

     1.7 inches </li>  Change the detail section's Height property to:

<pre class="fixed_text">     0.3 inches </li>  Set the Category Name footer section's properties as follows:

<pre class="fixed_text">     Height: 0.3 inches ForceNewPage: After Section OnFormat: =SetGrpFtrLoc([Report],7)

Note that the 7 in the SetGrpFtrLoc function in the footer section's OnFormat property indicates that you want the group footer to begin 7 inches from the top of the page. </li>  Create a new text box control with the following properties in the report's Category Name footer section:

<pre class="fixed_text">     Name: Number of Products ControlSource: =Count([Product ID])

NOTE: In Microsoft Access version 1.x, the Name property is called the ControlName property. </li> Preview the report.</li></ol>

NOTE: If you do not adjust the section heights as specified, the location of the group footer will vary from page to page.

Method 3: Setting Report Properties for the Detail Section
A similar approach is to use the MoveLayout, PrintSection, and NextRecord properties to print a blank detail section until the location for printing the group footer section is reached. This method is preferable to moving the group footer section if the detail section is smaller than the group footer section.

The following example demonstrates how to print the group footer at a specific place on the page by using a sample, user-defined function called SetDetailLoc that tests to see if this is the last detail section. For the last detail section, it then tests to see if the Top property is set to less than the GrpFtrLoc setting (the location where the group footer will be printed). If it is, the function moves the detail section to the next print location. If not, it does not move the detail section.

<ol> Open the sample database Northwind.mdb.</li>  Create a new module and enter the following statements in the Declarations section:

<pre class="fixed_text">      Option Explicit Dim RecCntr as Long </li>  Enter the following functions:

Function ResetCounter RecCntr = 0 End Function

Function SetDetailLoc(Rpt as Report, GrpFtrLoc as Double) RecCntr = RecCntr + 1 If Rpt.top < GrpFtrLoc * 1440 Then If reccntr = Rpt![Number Of Products] Then 'This is the last real record of the detail section. Rpt.nextrecord = False ElseIf reccntr > Rpt![Number Of Products] Then 'after last detail but not at location yet so move Rpt.movelayout = True     'Move to next print location Rpt.nextrecord = False    'Do not go to next record Rpt.printsection = False  'Don't print the section End If            ElseIf Rpt.top >= GrpFtrLoc * 1440 Then 'Last record before the group footer section prints. Rpt.printsection = False End If      End Function </li> Save the module.</li> Open the Catalog report in Design view.</li>  Set the following property for the Category Name header section:

<pre class="fixed_text">      OnFormat: =ResetCounter </li>  Set the following property for the Category Name footer section:

<pre class="fixed_text">      ForceNewPage: After Section </li>  Set the following property for the detail section:

<pre class="fixed_text">      OnFormat: =SetDetailLoc([Report],7-0.2)

Note that the 7 in the SetDetailLoc function in the footer section's OnFormat property indicates that the group footer begins 7 inches from the top of the page, and the 0.2 is the height of the detail section. (You need to subtract the detail      section's height because the footer section prints after the       detail section.) </li>  In the report's Category Name footer section, create a new text box and set the following properties:

<pre class="fixed_text">      Name: Number of Products ControlSource: =Count([Product ID])

NOTE: In Microsoft Access version 1.x, the Name property is called the ControlName property. </li> Preview the Catalog report.</li></ol>

<div class="references_section">