报表打印行数问题

yyuuu2003 2012-08-11 02:36:59
我试了,根本每页不打25个纪录,怎样设置打印让它打25个纪录一页?
老师,如果是你们要让报表每页打25个纪录,最后不满25的用空格补充你们怎么补
...全文
182 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
都市夜猫 2012-08-13
  • 打赏
  • 举报
回复
简单点
1. 首先 select 分组标识, count(*) from 源表算出有多个分组
2. 每次取出一个分组的数据到一个可写的 cursor
3. 对这个 cursor 预处理: append blank 加 25 条空记录,goto top, skip 25+1, delete rest
4. 用这个 cursor 驱动报表打印
5. 循环回 2,处理下一个分组
yyuuu2003 2012-08-12
  • 打赏
  • 举报
回复
各位老师,谢谢你们了,我解决这问题了
yyuuu2003 2012-08-12
  • 打赏
  • 举报
回复
我不是要它们的统计数,而是在数据表中,不同部门又按不同部门的人打印出来的,且这日期也是不同月份自动按部门的不同月份打印出来的,比如说部门是三班,四班,每个班有六月七月的数,那么我的报表就要按三班的六月、七月打印出来,四班也是按六月七月打印出来,因为我们输的票是按打印过的数字选出来的,这选出来的数就会有不同月份不同人,所以我报表要进行两个字段的分组,即部门、月份来进行分组,这样填入的空格分全部是空格那些空行打在一起,因为当这些空行是同组同月了
lygcw9602 2012-08-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
打错一行字,行数控制我会了,省掉这句话
[/Quote]
表单上增加一个组合框或者复选框,添加 部门,日期。分别统计。
yyuuu2003 2012-08-12
  • 打赏
  • 举报
回复
打错一行字,行数控制我会了,省掉这句话
yyuuu2003 2012-08-12
  • 打赏
  • 举报
回复
我刚试了一下,发现如果我用视图做数据源把空格增加在视图中是不行的,而如果直接用数据表做数据源增加的空格是可以,但不能分组,但我们的很多报表是要分组的,所以我认为增加空格的办法对分组的来说好象行不通,且我在页尾用DATE()函数计算,比如计打印的人数,那些空格也算进去了。我的报表是两个分组,一个是按部门分组,另一个是按日期分组,如果增加空格空格的全在一页。所以如果对于分组及计算来说增加空格好象还是不是办法,各位老师你们有什么办法能用程序控制行数吗?或者如果不满一页能不能让那汇总数直接跟在最后那个纪录后面?
lygcw9602 2012-08-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
没有用程序能让它打多少条纪录的吗?且我用下面这样设怎么不够一页没见用空格行补够一页啊?
use mggr again
i=1
nnn=25-mod(reccount(),25)
if nnn>0
for i=1 to nnn
appen blank
endfor
endif
report form mgbmgr prev
能告诉我怎么办吗
[/Quote]
是否设置了不打印空行或者不打印重复值
十豆三 2012-08-11
  • 打赏
  • 举报
回复
建议你找一下的基础书,重点看一下报表设计。
十豆三 2012-08-11
  • 打赏
  • 举报
回复
设计报表时,预览一下,看看能打印多少条?不是你想的条数,就适当调整行高或页标头高度或页注脚高度,直到是你想要的条数为至。
yyuuu2003 2012-08-11
  • 打赏
  • 举报
回复
没有用程序能让它打多少条纪录的吗?且我用下面这样设怎么不够一页没见用空格行补够一页啊?
use mggr again
i=1
nnn=25-mod(reccount(),25)
if nnn>0
for i=1 to nnn
appen blank
endfor
endif
report form mgbmgr prev
能告诉我怎么办吗
lygcw9602 2012-08-11
  • 打赏
  • 举报
回复
调整页面布局,手动调整为每页打印25条记录(如果纸张设置过小肯定打印不了25条记录)
本想自动读取报表的纸张大小,但返回来值都是默认纸张的大小,所以用了
Selest case 词句,但这样结果是纸张的类型不齐全。没有类型对应的纸张的在大小不能正确判断(此情况下,如果提供的参数不正确,报表结果将会变乱。此时只要调整一下参数。即得到正确的报表。)。如果有谁能解决此问题,请告知一声。

以下为新的函数说明:
==============================================================
函数名:RepDetail_Format()
调用报表必须使用控件:(文本框)
txtRecord_NO 在主体节 可见 用于显示记录号,可选
txtTotGrp 在主体节 不可见 =Count(*) 用于取得报表的总记录数,必须
txtCurrentPage 在主体节 不可见 =[Page] 用于取得当前页数,必须

参数说明: RepName 报表名称 (当前报表可用 (Me), 其它报表可用:(Reports.报表名)引用),必须
txtCurrentPage 报表主体节上的[txtCurrentPage]文本框控件 ,必须
txtRecordNum 报表定义的私人变量 数据类型:Integer 用于记录数的递增,必须
(注:在报表模块顶部声明 : Private txtRecordNum As Integer )
txtTotGrp 报表主体节上的[txtTotGrp]文本框控件 ,必须
IntPrintLen 报表打印行数
-----数据类型:Integer (注:不可超过每页允许的最大记录数),可选,(默认:25 行)
DouPageLine 报表主体记录部分打印长度。
-----数据类型:Double (注:不可超过每页允许的最大记录数),可选,(默认:21 CM )
FontSize 报表记录部分字号。
-----数据类型:Integer (注:不可超过每页允许的最大记录数),可选,(默认:0 字号不变)
txtRecord_NO 记录序号文本框名称。
-----数据类型:String (注:不可超过每页允许的最大记录数),可选,(缺省为没有使用)


使用方法:
1,先定义一私人变量:Private txtRecordNum As Integer,必须
2,报表主体节的格式化事件中调用(Detail_Format 事件)

调用方法:NextRecord=RepDetail_Format(RepName , txtCurrentPage.text , txtRecordNum , txtTotGrp.text , IntPrintLen)
使用示例:NextRecord = RepDetail_Format(Me, [txtCurrentPage], txtRecordNum, [txtTotGrp], 20)
本函数由 binuochao (许伟军) 完成。制作于2003-06-27 Email:binuochao@sina.com.cn QQ:10077241


=============================================================  

2,748

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧