| 网站首页 | 业界新闻 | 群组 | 人才 | 技术文章 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 190 人关注过本帖
标题:如何在报表设计器中设定细节带区打印的记录个数?
只看楼主 收藏
ycvf
Rank: 2
等 级:论坛游民
帖 子:108
专家分:25
注 册:2012-8-25
结帖率:77.78%
  已结贴   问题点数:20  回复次数:7   
如何在报表设计器中设定细节带区打印的记录个数?

以下时网络上找到的,但是试验运行到横线处时都出错了?

方法一:
在报表数据环境的destroy事件中加入代码:

=tablerevert(.f.)

在报表数据环境的ini事件中加入如下代码:

if vartype(tobePrint) = \"U\" Public tobePrint tobePrint = 20&&每页要打印的行数为20 endifdo while reccount(\"表名\") % tobePrint <> 0 append blank &&不足20行,添加空记录 enddo

下面这段代码为打印报表

RELEASE tobeprint PUBLIC tobeprint tobeprint = 20 &&设置每页打印20条记录 REPORT FORM 报表名 to print
方法二:怎么定义那两个报表变量?代码还能完善吗?
在该方法中,定义了一个全局变量tobePrint,该变量的值就是每页要打印的记录数,如果没有定义该变量,则使用默认的每页打印 15 条记录。

1、temp.dbf添加到报表数据环境中。

2、将temp.dbf的数据环境中的 BufferModeOverride 属性设置为 5。

3、在数据环境属性Destroy 事件中写:

=tablerevert(.t.)

4、在数据环境属性Init 事件中写:

if vartype(tobePrint) = "U" &&&& 如果全局变量还没有定义,在这里定义它的默认值为15

Public tobePrint

tobePrint = 15

endif

*-- 以下代码是为了当要打印的记录数不满一页时,打印空行来填满整个报表页

do while reccount("temp") % tobePrint <> 0

append blank

enddo

5、 在报表中新建两个报表变量如:nCount、nGroup,变量nCount的计算选项组中选择计数,在变量 nGroup 的要存储的值中写:

iif(nCount<>0 and nCount % tobePrint=0,nGroup+1,nGroup)

6、 在报表中增加一个分组并设置分组表达式为nGroup,并选择每组从新的一页上开始复选框。

7、 用以下代码来运行报表:

use temp

*-- 为避免重复定义变量错误,在定义全局变量前首先释放它

release tobeprint

*-- 定义全局变量,该变量中保存了每页要打印的记录数

public tobeprint

*-- 设置每页打印10条记录

tobeprint = 10

*-- 打印我们的报表

report form temp preview
2017-11-09 18:02
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:117
帖 子:4657
专家分:18890
注 册:2014-5-20
  得分:0 
report form 命令可以指定从当前记录开始打印多少条记录。
2017-11-09 19:20
sdta
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:146
帖 子:6825
专家分:15488
注 册:2012-2-5
  得分:0 
if vartype(tobePrint) = "U" Public tobePrint tobePrint = 20&&每页要打印的行数为20 endifdo while reccount("表名") % tobePrint <> 0 append blank &&不足20行,添加空记录 enddo

if vartype(tobePrint) = "U"
    Public tobePrint
    tobePrint = 20 &&每页要打印的行数为20
endif
do while reccount("表名") % tobePrint <> 0
    append blank &&不足20行,添加空记录
enddo

[此贴子已经被作者于2017-11-9 21:08编辑过]


QQ:243688667
2017-11-09 19:39
sdta
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:146
帖 子:6825
专家分:15488
注 册:2012-2-5
  得分:0 
最好是截圖上傳

QQ:243688667
2017-11-09 19:43
ycvf
Rank: 2
等 级:论坛游民
帖 子:108
专家分:25
注 册:2012-8-25
  得分:0 
以下是引用sdta在2017-11-9 19:39:55的发言:

if vartype(tobePrint) = \"U\" Public tobePrint tobePrint = 20&&每页要打印的行数为20 endifdo while reccount(\"表名\") % tobePrint <> 0 append blank &&不足20行,添加空记录 enddo

if vartype(tobePrint) = \"U\"
    Public tobePrint
    tobePrint = 20 &&每页要打印的行数为20
endif
do while reccount(\"表名\") % tobePrint <> 0
    append blank &&不足20行,添加空记录
enddo

不懂划线的地方是什么意思?

落花人独立,微雨燕双飞。
2017-11-09 20:39
sdta
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:146
帖 子:6825
专家分:15488
注 册:2012-2-5
  得分:0 
去掉 "\" 就沒問題了,那是網頁的問題。
代碼是從梅子論壇找的吧

[此贴子已经被作者于2017-11-9 21:09编辑过]


QQ:243688667
2017-11-09 21:06
ycvf
Rank: 2
等 级:论坛游民
帖 子:108
专家分:25
注 册:2012-8-25
  得分:0 
以下是引用sdta在2017-11-9 21:06:13的发言:

去掉 "\" 就沒問題了,那是網頁的問題。
代碼是從梅子論壇找的吧

是的。
运行后出现下面提示?

附件: 您没有浏览附件的权限,请 登录注册

落花人独立,微雨燕双飞。
2017-11-10 13:16
mywisdom88
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:62
帖 子:2100
专家分:5127
注 册:2015-3-25
  得分:20 
4、在数据环境属性Init 事件中写:

if vartype(tobePrint) = "U" &&&& 如果全局变量还没有定义,在这里定义它的默认值为15
明显是这里错误,
2017-11-10 17:28







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

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