_PAGETOTAL System Variable

Contains the total number of pages in a report.

You can use _PAGETOTAL to set up "Page X of Y" numbering in reports. _PAGETOTAL is supported in both development and run-time versions of Visual FoxPro and in all reporting operations, including REPORT FORM...TO FILE...ASCII and with optional arguments such as RANGE.

_PAGETOTAL [ = nValue ]

Parameters

  • nValue
    Specifies a positive number representing the total number of pages in a report.

Remarks

You can set _PAGETOTAL at any time. Visual FoxPro evaluates and updates _PAGETOTAL only when a report operation such as REPORT FORM occurs. At the beginning of the report operation, Visual FoxPro initializes _PAGETOTAL to a value of 0, regardless of whether _PAGETOTAL is used on the report.

If you include _PAGETOTAL anywhere in a Visual FoxPro report, Visual FoxPro performs two passes through the report. The first pass is not visible or printed and calculates the _PAGETOTAL variable. During the first pass, _PAGETOTAL is set to a value of -1.

For performance reasons, you can suppress a two-pass report by not calling _PAGETOTAL in a print preview using an expression such as the following:

TRANS(_PAGENO) + IIF(SYS(2040)="1", "", " OF " + TRANS(_PAGETOTAL))

If you do not include a reference to _PAGETOTAL in the report, Visual FoxPro sets the value of _PAGETOTAL to the total number of pages at the end of printing and performs only one pass through the report.

You can force a second pass through the report using an expression such as the following:

IIF( _PAGETOTAL = 0, "","" )

Initiating another pass allows for additional operations using report variables such as reporting % of the total number of pages.

Tip

For a second pass to occur, in previous versions of Visual FoxPro, you needed a reference to _PAGETOTAL in the report layout. In Visual FoxPro 9.0, you can also use a ReportListener reference on your REPORT FORM command. By setting the ReportListener's TwoPassProcess property to .T. before a report run, you can force the report to perform two passes, even if you have not used _PAGETOTAL in any expressions in the report. For more information, see TwoPassProcess Property.

The value of _PAGETOTAL should equal the value of _PAGENO at the end of printing a report, regardless whether the report includes _PAGETOTAL.

Example

The following example illustrates how to include "Page X of Y" numbering in your report by using the _PAGETOTAL system variable and adding the following expression in the report textbox:

"Page " + TRANS(_PAGENO) + " of " + TRANS( _PAGETOTAL)

See Also

Reference

System Variables Overview
_PAGENO System Variable
ReportListener Object Properties, Methods, and Events
REPORT FORM Command