【vfp开源代码栏目提醒】:网学会员,鉴于大家对vfp开源代码十分关注,论文会员在此为大家搜集整理了“createreport.prg”一文,供大家参考学习!
WAIT WINDOW "正在生成报表,请稍候..." NOWAIT
IF NOT USED("tblClass_1")
USE tblClass_1 IN 0 ALIAS tblClass_1 &&打开表
ENDIF
SELECT tblClass_1
SET ORDER TO 班名称 &&设置索引
*!* 建立报表对象
loReport=NEWOBJECT("SFReportFile","SFREPOBJ") &&建立报表对象
loReport.cReportFile='MyReport.frx' &&设置报表文件名
loReport.lSummaryBand=.T. &&添加总结带区
loReport.cFontName="宋体" &&设置默认字体
loReport.nFontSize=11 &&设置默认字号
loReport.lPrivateDataSession=.F. &&不使用私有数据
工作期
loReport.cUnits="C"
*!* 建立报表变量
loVariable=loReport.CreateVariable()
loVariable.cName="nCountStudent" &&统计学生人数变量
loVariable.cValue=0
loVariable.cInitialValue=0
loVariable.cTotalType="Count"
loVariable.nResetOnGroup=1
loVariable=loReport.CreateVariable()
loVariable.cName="nAveMark1" &&求平均语文成绩变量
loVariable.cValue="tblclass_1.语文成绩"
loVariable.cInitialValue=0
loVariable.cTotalType="Average"
loVariable.nResetOnGroup=1
loVariable=loReport.CreateVariable()
loVariable.cName="nAveMark2" &&求平均数学成绩变量
loVariable.cValue="tblclass_1.数学成绩"
loVariable.cInitialValue=0
loVariable.cTotalType="Average"
loVariable.nResetOnGroup=1
*!* 建立页标头
loPageHeader=loReport.GetReportBand('Page Header')
loPageHeader.nHeight=4
*!* 添加标签
loObject=loPageHeader.AddItem("text")
loObject.cExpression="学生成绩表" &&标签文本
loObject.cFontName='楷体_GB2312' &&设置字体
loObject.nFontSize=20 &&设置字号
loObject.nWidth=20 &&设置标签宽度
loObject.nHeight=2 &&设置标签高度
loObject.nVPosition=2 &&设置纵向位置
loObject.nHposition=20 &&设置横向位置
loObject.nForeColor=RGB(0,0,0) &&设置字体前景色
*!* 添加数据分组
loReport.CreateGroupBand()
loGroup=loReport.GetReportBand("Group Header", 1) &&取得对第1个分组的组标头引用
loGroup.cExpression="tblClass_1.班名称"
loGroup.nHeight=2.6
loGroup.lPrintOnEachPage=.T. &&设置每页打印组标头
loGroup.lStartOnNewPage=.T. &&设置每组从新一页开始打印
*!* 在组标头中添加班级名称域控件
loObject=loGroup.AddItem("field")
loObject.cExpression="'班级名称:'+ALLTRIM(班名称)" &&域控件表达式
loObject.nWidth=40
loObject.nHeight=1
loObject.nVPosition=0.5
loObject.nHposition=2
*!* 在组标头中添加矩形
loObject=loGroup.AddItem("box")
loObject.nHeight=1.5
loObject.nWidth=64 &&设置矩形的宽度
loObject.nVPosition=2 &&设置纵向位置
loObject.nHposition=2 &&设置横向位置
loObject.nPenSize=1
*!* 在组标头加入两条竖线
loObject=loGroup.AddItem("line")
loObject.nHeight=1.5
loObject.nVPosition=2
loObject.nHposition=18
loObject.lVertical=.T. &&设置为竖线
loObject.nPenSize=1
loObject=loGroup.AddItem("line")
loObject.nHeight=1.5
loObject.nVPosition=2
loObject.nHposition=42
loObject.lVertical=.T.
loObject.nPenSize=1
*!*在组标头加入标签
loObject=loGroup.AddItem("text")
loObject.cExpression="学生"
loObject.nWidth=8
loObject.nVPosition=2.5
loObject.nHposition=6
loObject=loGroup.AddItem("text")
loObject.cExpression="语文成绩"
loObject.nWidth=8
loObject.nVPosition=2.5
loObject.nHposition=28
loObject=loGroup.AddItem("text")
loObject.cExpression="数学成绩"
loObject.nWidth=8
loObject.nVPosition=2.5
loObject.nHposition=50
*!* 建立细节带
loDetail=loReport.GetReportBand('Detail')
loDetail.nHeight=1.5
*!* 在细节带中添加矩形
loObject=loDetail.AddItem("box")
loObject.nHeight=1.5
loObject.nWidth=64
loObject.nVPosition=0
loObject.nHposition=2
loObject.nPenSize=1
*!* 在细节带加入两条竖线
loObject=loDetail.AddItem("line")
loObject.nHeight=1.5
*loObject.nWidth=30
loObject.nVPosition=0
loObject.nHposition=18
loObject.lVertical=.T.
loObject.nPenSize=1
loObject=loDetail.AddItem("line")
loObject.nHeight=1.5
*loObject.nWidth=30
loObject.nVPosition=0
loObject.nHposition=42
loObject.lVertical=.T.
loObject.nPenSize=1
*!*在细节带加入域控件
loObject=loDetail.AddItem("field")
loObject.cExpression="tblClass_1.学生"
loObject.nWidth=10
loObject.nVPosition=0.25
loObject.nHposition=6
loObject=loDetail.Add