使用ActiveReport报表若干问题!(江糊救急)

bobbycpu 2003-08-20 02:16:52
1.如何判断是否到报表的最后一页
2.当报表数据源为空是,如果填充记录,也就是空报表(主要报表是以表格方式)
第页20行数据!
3.以表格形式做报表时,细节和本页合计部分有一部分空间,如何去掉,谢谢!
...全文
127 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
greystar 2003-08-24
  • 打赏
  • 举报
回复
up
handwolf 2003-08-22
  • 打赏
  • 举报
回复
兄弟,该揭贴了吧!
handwolf 2003-08-21
  • 打赏
  • 举报
回复
估计没有方便的方法可以得到报表的总页数,因为你的程序可以控制页数,比如,你可以在程序中早点把关联的记录集movelast,这样就可以早点结束报表,本来要打印20张的可以控制在打印10张,编译器一般没有这么大的能力可以计算出这个时候报表的总页数!!!

所以,最好的方法还是自己用程序来算出报表的总页数!你可以控制一张纸打印的记录数,同时算出总的记录数,很容易就可以得到你要的总页数了!!!

很遗憾,不能给你找到方便的方法!!!
handwolf 2003-08-21
  • 打赏
  • 举报
回复
planetike(阿胜),这个我也试过,但是结果不对AReport.pages.count一直比AReport.pagenumber小1
如果直接用AReport.pages则会出现错误!
planetike 2003-08-21
  • 打赏
  • 举报
回复
AReport.pagenumber=AReport.pages
bobbycpu 2003-08-21
  • 打赏
  • 举报
回复
其他问题都解决了,就只是我想很方便的知道,如何到了报表最后一页
bobbycpu 2003-08-20
  • 打赏
  • 举报
回复
可以有详细的代码贴上来看一下
bobbycpu 2003-08-20
  • 打赏
  • 举报
回复
有没有详细的代码可以贴上来,谢谢!
handwolf 2003-08-20
  • 打赏
  • 举报
回复
3,你可以将本页合计放在Detail部分,设置它的visible为false,
当到这一页最后一条记录时,设置它的visible为true,
handwolf 2003-08-20
  • 打赏
  • 举报
回复
2,这个问题我也遇到过,我的解决方法是程序控制(假设你一页打印20行)
1) 如果记录源空,则可以建一临时记录集,除了允许字段为空外,其他的与原记录源
相同,这样可以增加空记录(比如20条),然后用临时记录集绑定

2) 如果记录源不空,记录数不能添满一页,想用空记录添满;则可以用如下方法控制:

首先,要有变量记录当前打印的是一页中的第几行(如整型的printline变量)

然后在报表的Detail_Format()事件中控制是否到达记录集尾,是否打印了20行

如果打到最后一条记录还没有打完一页,就让帮定的记录集moveprevious!!!直到
打印完一页!

注意:这里的最后一行可要控制好
第一次moveprevious时,不要进行清空绑定的field控件
第二次到最后一次moveprevious时,一定要清空绑定的field控件,否则会一直
显示最后一条记录

handwolf 2003-08-20
  • 打赏
  • 举报
回复
1,这一点我也不知道有什么属性可以判断是否到报表的最后一页,但是方法是有的,我以前
的方法是控制一页的记录行数,然后根据记录总数计算出总的页数,报表的pageNumber属
性表示当前的页码,比较一下就可以了,然后显示总页数与当前页码的方法如下:
--在页脚中添加一个用于显示总页数的Field和一个用于显示第几页的Field2。
--显示总页数的Field1:设置Summaryrunning的值为:0(ddsrNone)
summaryFunc的值为0
Summarytype的值为4
--显示第几页的Field2:设置Summaryrunning的值为:2(ddsrall)
summaryFunc的值为2
Summarytype的值为4

td427 2003-08-20
  • 打赏
  • 举报
回复
up
handwolf 2003-08-20
  • 打赏
  • 举报
回复
下面的是第一次做的代码,命名不规则!!!希望你看得不会累!后来写的代码是用临时记录集的!


Dim rst As ADODB.Recordset
Dim num As Integer '记录已输出的有效记录数-1
Dim bc As Integer '记录所需补的空记录数 ,在变,最后减为0
Dim bc2 As Integer '记录所需补的空记录数 ,一直不变
Dim totalPagenum As Integer '记录总页数
Dim recordnum As Integer '记录总记录数
Dim flag As Boolean '控制开关,控制最后一条记录的显示

Private Sub ActiveReport_ReportStart()
Set rst = GetRecordset("select * from ymjzjl") '注意这里的打开方式,recordcount
'的属性必须可用
'赋初值
num = -1
recordnum = rst.RecordCount'总记录数
bc = 10 - recordnum Mod 10
If bc = 10 Then
bc = 0
End If
bc2 = bc '需要补充的行数
If bc = 0 Then
totalPagenum = recordnum / 10'总的页数
Else
totalPagenum = recordnum / 10 + 1
End If
rst.MoveFirst
DataControl1.Recordset = rst
End Sub

Private Sub Detail_Format()
PageBreak1.Enabled = False 'PageBreak1用来控制一页只显示10条记录
num = num + 1 '已经打印的行数
If num >= recordnum - 1 And bc > 0 Then
If flag = True Then
Field2.Text = ""
Field1.Text = ""
Field3.Text = ""
Field4.Text = ""
Field5.Text = ""
End If
flag = True
rst.MovePrevious
bc = bc - 1 '还需打印的空行减1
End If
If bc = 0 And flag = True Then
Field2.Text = ""
Field1.Text = ""
Field3.Text = ""
Field4.Text = ""
Field5.Text = ""
End If
If (num + 1) Mod 10 = 0 Then
If Me.pageNumber = totalPagenum Then
MsgBox ("Last Page!") '最后一页的最后一条,这里你可以添加自己的代码
End If

If Not Me.pageNumber = totalPagenum Then
PageBreak1.Enabled = True '一页10行打印完毕,换页
End If
End If
End Sub

809

社区成员

发帖
与我相关
我的任务
社区描述
VB 多媒体
社区管理员
  • 多媒体
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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