_PAGETOTAL 系统变量
请参阅 示例
全部折叠 全部展开
包含一个报表中的页面总数。
可以用 _PAGETOTAL 在报表中设置“共 Y 页第 X 页”编号方式。_PAGETOTAL 支持 Visual FoxPro 开发和运行时的版本以及所有的报表操作,包括 REPORT FORM...TO FILE...ASCII 以及可选的 RANGE 之类的参数。
_PAGETOTAL [ = nValue ]
参数
nValue
指定一个表示报表中的总页数的正数。
说明
可以在任何时候设置 _PAGETOTAL。Visual FoxPro 只是在发生 REPORT FORM 之类的报表操作时才计算和更新 _PAGETOTAL。在报表操作之初,不论报表上是否使用了 _PAGETOTAL,Visual FoxPro 都初始化 _PAGETOTAL 的值为 0。
如果在 Visual FoxPro 报表中的任何地方包含了 _PAGETOTAL,Visual FoxPro 将两次执行报表。第一次是不可见或不打印的,只是计算 _PAGETOTAL 变量。在第一次时,_PAGETOTAL 的值设置为 -1。
出于对性能的考虑,可以象下面那样,通过使用一个在打印预览中不调用 _PAGETOTAL 的表达式来抑制报表的两次执行:
复制代码
TRANS(_PAGENO) + IIF(SYS(2040)="1", "", " OF " + TRANS(_PAGETOTAL))
如果在报表中没有包含对 _PAGETOTAL 的引用,Visual FoxPro 在打印结束时设置 _PAGETOTAL 的值为总页数并且只执行一次报表。
可以使用象下面那样的表达式来强制第二次执行报表:
复制代码
IIF( _PAGETOTAL = 0, "","" )
开始另一次执行是考虑利用报表变量进行额外的操作,如,报告总页数的 %。
提示:
为了出现第二次执行,在早期的 Visual FoxPro 版本中,需要在报表布局中引用 _PAGETOTAL。Visual FoxPro 9.0 SP2 中,也可以在 REPORT FORM 命令中使用 ReportListener 引用。通过在报表运行之前设置 ReportListener 的 TwoPassProcess 属性为 .T.,来强制报表执行两次,即使报表中没有任何表达式使用了 _PAGETOTAL。更多的信息,请参见 TwoPassProcess 属性。
不论报表是否包含 _PAGETOTAL,_PAGETOTAL 的值应当等于报表打印结束时 _PAGENO 的值。
示例
下面的示例列举了如何通过使用 _PAGETOTAL 系统变量并在报表文本框中添加下列表达式,在报表中包含“共 Y 页第 X 页”编号方式:
复制代码
"共 " + TRANS( _PAGETOTAL) + " 页第 " + TRANS(_PAGENO) +" 页"