| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 632 人关注过本帖
标题:有关_PAGETOTAL 系统内存变量中注介理介不了,请高手指教
只看楼主 加入收藏
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
结帖率:79.38%
收藏
已结贴  问题点数:20 回复次数:10 
有关_PAGETOTAL 系统内存变量中注介理介不了,请高手指教
_PAGETOTAL 系统内存变量

可以在任何时候设置 _PAGETOTAL。Visual FoxPro 只是在发生 REPORT FORM 之类的报表操作时才计算和更新 _PAGETOTAL。在报表操作之初,不论报表上是否使用了 _PAGETOTAL,Visual FoxPro 都初始化 _PAGETOTAL 的值为 0

如果在 Visual FoxPro 报表中的任何地方包含了 _PAGETOTAL,Visual FoxPro 将两次执行报表。第一次是不可见或不打印的,只是计算 _PAGETOTAL 变量。在第一次时,_PAGETOTAL 的值设置为 -1


具体指的是什么?谁能通俗举一例子帮我理介一下。
搜索更多相关主题的帖子: 内存 系统 
2013-01-08 15:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
自己写过一些打印的程序就知道怎么回事了,使用这种设计器,永远不会明白为什么会这样。

授人以渔,不授人以鱼。
2013-01-08 15:54
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
请TonyDeng不吝指教,简单一些举一个通俗例子好吗?
2013-01-08 16:18
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
_PAGETOTAL这个变量,是用来统计总页数的,如果不真正把内容输出一次,打印程序怎么能够在打印完成之前知道总共有多少页?如果你每一行的高度都是一样、间隔也是一样的,那种当然可以通过计算总行数来估算总页数,但现在的图形打印丰富多彩,程序不可能有机械的公式可以算得出的,它只能在真正打过之后才知道总页数。所以只要你在它打完之前使用_PAGETOTAL的值,它就必须先模拟输出一次,获得确切的值,才能给你使用,这样就迫不得已要打印两次,第一次是模拟打印,第二次才是真正打印,两次的操作是一样的。

授人以渔,不授人以鱼。
2013-01-08 16:29
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:10 
VFP8使用了_PAGETOTAL这个系统变量来记录总页数。在报表运行前,VFP先检验_PAGETOTAL变量是否被使用,如果是,VFP将运行两次报表。第一次运行的目的是获得总页数,第二次运行是真正进行报表预览或打印。如果_PAGETOTAL变量在报表中没有加以使用,VFP不会运行两次报表,所以你也不必担心此时系统性能会受到影响。
 记得使用_PAGETOTAL系统变量时,报表会运行两次非常重要。特别是当你在报表中使用了自定义函数或过程来更新数据的情况下,为了避免对数据进行两次操作,应当在代码前面加上如下的判断语句:
IF _PAGETOTAL <> 0
  **这里运行你自己得相应语句
ENDIF
 在报表第一次运行时,_PAGETOTAL变量的值是0。因此,当_PAGETOTAL不为0时,才是报表的第二次运行,此时才进行数据更新工作。
 上面提到过,使用_PAGETOTAL变量后,利用NOPAGEEJECT子句进行报表串联打印会出错。原因是第一个报表并不知道总共打印的报表数量而只能计算出它自己所包含的总页数。第二个报表能够计算第一个报表和自己的总页数,却不能计算下面的报表页数,如此类推。这样,除了最后一份报表外,不可能得到正确的报表总页数。比如,串联打印三个报表,每个报表均包含两页,显示的页数情况会如下所示:
第1页共2页
第2页共2页
第3页共4页
第4页共4页
第5页共6页
第6页共6页


2013-01-08 16:30
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
对第一个问题有点理介了,
第二个问题:任何地方包含了 _PAGETOTAL。。。。。在第一次时,_PAGETOTAL 的值设置为 -1。?
<任何地方包含了>是指报表的什么地方?
<在第一次时,_PAGETOTAL 的值设置为 -1。>为什么是-1?它与前面初始化 _PAGETOTAL 的值为 0。有何区别?



2013-01-08 20:10
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
设置该值为-1是让你知道当前处于哪个过程

授人以渔,不授人以鱼。
2013-01-08 20:24
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
是不是可以这样理介:,第一次是模拟打印时_PAGETOTAL的初始化值为0,PAGETOTAL 的值设置为 -1表示是第一次模拟打印?
任何时候设置与任何地方又表示何意?

[ 本帖最后由 sylknb 于 2013-1-9 09:29 编辑 ]
2013-01-09 09:27
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
两个任何,就是在程序运行的这个阶段该变量都是这个值,不会变。

授人以渔,不授人以鱼。
2013-01-09 14:38
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1547
专家分:184
注 册:2006-6-3
收藏
得分:0 
初始化时_PAGETOTAL的初始化值为0已试出来了,但_PAGETOTAL为-1不知如何试?能否给我一个试测程序?好吗?
2013-01-10 10:09
快速回复:有关_PAGETOTAL 系统内存变量中注介理介不了,请高手指教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023411 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved