标题:记录若干,用报表显示、打印,如何在每个记录显示、打印“共 页 第 页”( ...
只看楼主
qinwh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2021-3-15
结帖率:50%
已结贴  问题点数:20 回复次数:9 
记录若干,用报表显示、打印,如何在每个记录显示、打印“共 页 第 页”(每条记录多于2页)
记录若干,用报表显示、打印,如何在每个记录显示、打印“共  页 第  页”(每条记录多于2页)
搜索更多相关主题的帖子: 打印 记录 显示 报表 
2022-01-21 13:02
qinwh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2021-3-15
得分:0 
回复 楼主 qinwh
打印每一个记录(假如本记录有三页)第一页显示 共3页 第1页,第二页显示共3页 第2页,第三页显示共3页 第3页.
请高手指点。
2022-01-21 13:11
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:7 
此记录非彼记录,解释一下“记录”是什么
2022-01-21 13:54
qinwh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2021-3-15
得分:0 
求高手指教
建立一个表,通过表单将数据在于表中,存入的数据为表中的记录,通过报表显示、打印。
现在想在VFP报表中实现每个记录(每个记录多于2页)打印的页码为"第几页,共几页" 且一次只打印一个记录。

  比如某一个记录有2页,这个记录对应的报表页码第一页就显示成“第1页,共2页”,第二页显示成“第2页,共2页”;
  另一个记录有有3页,这个记录对应的报表页码第一页就显示成“第1页,共3页”, 第二页显示成“第2页,共3页”, 第三页显示成“第3页,共3页”;


[此贴子已经被作者于2022-1-21 15:34编辑过]

2022-01-21 15:29
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:7 
系统变量 _PAGETOTAL 就是总页数
通常一个表会打印多个记录,不知你说的记录是啥样子,需要打印多页,是一个记录的字段非常多吗?
2022-01-21 16:01
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
什么情况? 一条记录有2页、有3页、有n页
2022-01-21 17:55
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
“且一次只打印一个记录”,估计有什么还没想到的情况
2022-01-22 08:30
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:7 
回复 2楼 qinwh
"第 "+alltrim(STR(_PAGENO))+" 页"+"  共 "+alltrim(str(_PageTotal))+" 页"
2022-01-22 12:34
kangss
Rank: 4
等 级:贵宾
威 望:10
帖 子:138
专家分:237
注 册:2014-6-12
得分:0 
_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) +" 页"
 
2022-01-22 12:35
adonguo163
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2020-9-29
得分:0 
我也想知道
2022-01-29 10:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508208-1-1.html




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

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