Database 版 (精华区)

发信人: mengy (LEAR DLLS 命令时,将从内存中清除), 信区: Database
标  题: Visual FoxPro报表事件的应用
发信站: 哈工大紫丁香 (2000年12月13日09:13:31 星期三), 站内信件

Visual FoxPro报表事件的应用
(广东 李伟明)
 
  在Visual FoxPro中有一类不太引人注意的事件——报表带区事件,在报表设
计器中每一带区都有两类事件,入口事件和出口事件。
  1使用方法
  进入报表设计器,双击报表带区分隔条,打开报表带区对话框,在“On 
Entry”输入触发进入带区事件的函数名,在“On Exit”输入触发离开带区事件的
函数名,注意这两个输入框,只能输入方法名或函数名,其他语句Visual FoxPro
会忽略。
  2举例说明
  例1:在每页报表的尾部常常要求打印某些信息,如制表人,制表时间,每页
小计等。用报表设计器非常容易做到,在页注脚带区设置相应的控件即可。问题是
在报表的最后一页,常常不会满页,这样最后打印的数据与页注脚之间存在一段空
白,很不美观,特别是数据使用了分隔线时更觉别扭。下面利用报表带区事件把最
后一页页注脚带区的内容移到细节带区之后。打开过程文件,新增下列函数:
  FUNCTION EndPrint()
  EndPrint=.T.
  EndFunction
  或建立ENDPRINT.PRG文件,内容为
  EndPrint=.T.
  打开报表设计器,设计好各带区,或打开已有的报表文件,当然页注脚带区应
有内容,否则,下面的做法毫无意义。全选页注脚带区各控件,复制到剪贴板,在
“Report”菜单下选“Title/Summary”菜单项,在出现的窗口中选“Summary 
band”后,单击“OK”。把剪贴板的内容粘贴到总结带区,调整好位置,这时用打
印预览可见最后一页数据后,紧接着输出页注脚,它们之间不存在空白,但页尾出
现重复数据,退出预览,新增报表变量EndPrint,初始值为.F.,报表输出后释放
。双击总结带区分隔条,在“Summary”对话框的“On Exit”中键入EndPrint(),
退出后,分别双击注脚带区各控件,在弹出的对话框中单击“Print When”后,在
“Print Only When Expression is True”中输入EndPrint=.F.,单击“OK”即可

  例2:Visual FoxPro报表设计器的数据分组功能非常强大和灵活,但分组的数
量(组数)无法直接得到,例如以客户名分组数据,各客户的相关项数和合计金额
以及全部客户的总计金额都容易得到,但客户的数量却无法直接统计。下面利用报
表带区事件统计分组组数。打开过程文件,新增下列函数:
  FUNCTION GroCount()
  GroCount=GroCount+1
  EndFunction
  或建立GROCOUNT.PRG文件,内容为
  GroCount=GroCount+1
  打开报表设计器,设计好各带区,或打开已有的报表文件。新增报表变量
GroCount,初始值为0,报表输出后释放。双击注脚带区分隔条,在弹出的对话框
的“On Exit”中键入GroCount(),退出对话框,在“Report”菜单下选“
Title/Summary”项,在打开的对话框中选“Summary band”复选框,单击“OK”
。在总结带区添加客户数标签控件和字段控件,输入字段控件表达式为GroCount,
调整好大小和位置即可。
 

--

       大海无边天做岸
               山登绝顶我为风

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.227.121]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.086毫秒