VFP6教程第8章 报表.docx
- 文档编号:5338678
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:17
- 大小:165.65KB
VFP6教程第8章 报表.docx
《VFP6教程第8章 报表.docx》由会员分享,可在线阅读,更多相关《VFP6教程第8章 报表.docx(17页珍藏版)》请在冰豆网上搜索。
VFP6教程第8章报表
第8章报表
应用程序除了完成对信息的处理、加工之外,还要完成对信息的打印输出。
VFP提供的报表功能可以将要打印的信息快速的组织、修饰即布局,形成报表或标签的形式打印输出。
报表是由数据源和布局组成,数据源通常是指数据库表、自由表、视图、查询和临时表,布局是指定义报表的打印格式。
尽管报表和标签可以完成对信息的打印输出任务,但它们并不是万能的,在实际应用中有时遇到的特殊报表仍然需要通过编程来处理。
8.1用编程打印输出报表
8.1.1建立输出报表的相关命令
用编程建立报表的一般步骤:
1.启动打印机命令;
2.输出报表标题;
3.输出报表内容;
4.关闭打印机恢复屏幕输出状态。
8.1.2启动打印机与关闭打印机命令
格式1:
SETDEVICETOSCREEN|TOPRINT|TOFILE
格式2:
SETPRINTON|OFF
功能:
格式1用来指定将@……say命令的输出结果直接送到屏幕或打印机或文件中。
格式2若取ON是将除@……say命令以外的输出命令如?
、?
?
等送到打印机输出,同时也输出到屏幕;若取OFF表示只输出到屏幕。
例8.1将学生表中的学号、姓名、入学成绩打印输出。
*p8_1
use学生
*setprinton&&打印机开可去掉此行首*
?
space(10)+'学生入学成绩单'
?
'学号'+space(10)+'姓名'+space
(2)+'入学成绩'
scanfor!
eof()
?
学号+space(5)+'姓名'+space(4)+str(入学成绩,3)
endscan
use
*setprintoff&&打印机开可去掉行首*
return
例8.2将学生表中的学号、姓名、性别、入学成绩输出到打印机。
*p8_2.prg
use学生
*setdevicetoprint&&若打印将行首*去掉
@1,20say'学生情况表'
@2,1say'学号姓名性别入学成绩'
i=3
scanfor!
eof()
@i,1say学号+space(5)+姓名+space(4)+性别+space(4)+str(入学成绩,4)
i=i+1
endscan
use
*setdevicetoscreen
return
8.1.3关于@……say语句
1.在@……say语句中可加入字体、字型、字号
格式:
@<行,列>say<表达式>[FONT<字体名>[,<字大小>]]
功能:
在指定的行列显示表达式的值。
说明:
<字体名>需用字符定界符括起来。
2.打印图形
格式:
@<行,列>say<位图文件名>BITMAP|<通用型字段名>[ISOMETRIC|STRETCH][SIZE<数值表达式1>,<数值表达式2>][NOWAIT]
功能:
将位图文件或通用字段显示在指定行、列的位置。
说明:
1)[ISOMETRIC]表示缩放图片,使其比例适应指定区域的大小。
2)[STRETCH]表示在水平垂直两个方向缩放图片。
3)[SIZE<数值表达式1>,<数值表达式2>]用来指定图片的大小,<数值表达式1>为高度,<数值表达式2>为宽度。
4)[NOWAIT]表示在执行时不等待。
例8.3将例8.2加上字体和大小
*p8_3.prg
use学生
*setdevicetoprint
@0,20say'学生情况表'font'隶书',20
@3,1say'学号姓名性别入学成绩'font'黑体',10
i=4
scanfor!
eof()
@i,1say学号+space(5)+姓名+space(4)+性别+space(4)+str(入学成绩,4)font'黑体',10
i=i+1
endscan
use
*setdevicetoscreen
return
例8.4显示学生的近照。
*p8_4.prg
use学生
@1,1say'学生近照'
i=2
scanfor!
eof()
@i,1say姓名
@i,20say近照isometricsize20,20
i=i+12
endscan
use
return
注意:
此题学生表中的近照字段要全部录入照片!
8.2报表设计
VFP创建报表有三种方式,第一种是用向导创建报表;第二种是使用快速报表创建报表;第三种是用报表设计器创建报表。
不管使用哪种方式创建报表,都要在创建报表之前先对报表进行总体规划和布局。
8.2.1报表的总体规划和布局
1.总体规划
(1)决定要创建的报表类型;
(2)需要的数据源是一个还是多个,它们之间的关系;
(3)采用哪种常规布局方式。
2.报表的常规布局
在创建报表前应确定所需报表的常规布局,根据不同的需要,由表8.1列出了报表常规布局的说明,在确定常规布局时要考虑纸张的要求。
表8.1报表常规布局
布局类型
说明
示例
列
每一行一条记录,每一条记录的字段在页面上按水平方向设置
分组/总汇报表,财政报表等
行
一列的记录,每条记录的字段在一侧竖直放置即每个字段一行字段名在数据左侧,字段与其数据在同行
列表
一对多
一条记录或一对多关系。
其内容包括父表的记录及子表的记录
发票、会计报表
多列
多列记录,每条记录的字段沿左边缘竖直放置
电话号码簿、名片
8.2.2用报表向导创建报表
文件菜单新建或常用工具栏中的新建按钮,打开新建对话框在文件类型中选报表向导,打开向导选取对话框如图8.1所示,此对话框中有两个选项供选择。
当报表数据源为一个单一的表时选报表向导,当数据源是由父表和子表组成时,选一对多报表向导。
然后根据向导各步骤的提示完成报表的制作。
图8.1向导选取对话框
2.应用举例
例8.5用报表向导为学生表创建报表
启动报表向导的步骤为:
文件菜单新建在新建对话框文件类型中选报表新建文件,打开报表选取对话框报表向导确定,进入报表向导步骤1字段选取,如图8.2所示单击对话框按钮,打开”打开对话框”在文件列表框中选学生表确定将可用字段列表框中的字段移到选定字段列表框中下一步,进入步骤2分组记录,如图8.3所示(值得说明的是分组分三个层次,只有当对分组字段索引后,分组才能正确,本例不分组)下一步,进入步骤3选择报表样式,如图8.4所示,本例选简报式下一步,进入步骤4定义报表布局,如图8.5所示,列数为1,方向为纵向下一步,进入步骤5排序记录,如图8.6所示指定按学号排序下一步,进入步骤6完成,如图8.7所示预览,显示预览结果如图8.8所示关闭预览完成,打开另存为对话框如图8.9所示在保存报表为文本框中输入报表名学生报表1保存,此时以学生报表1.FRX存入磁盘。
图8.2步骤1字段选取
图8.3步骤2分组记录
图8.4步骤3选择报表样式
图8.5步骤4定义报表布局
图8.7报表向导步骤6
图8.8预览结果
图8.9另存为对话框
8.2.3用快速报表创建报表
快速建表创建报表时,必须在报表设计器打开时才可以建报表。
现在用例8.6来说明快速建表的方法。
例8.6用快速报表为学生表建立报表。
操作步骤如下:
(1)打开报表设计器
图8.10报表设计器
文件菜单新建,打开新建对话框在文件类型中选报表,打开新建报表对话框新建报表,打开报表设计器如图8.10所示,它是一个空白的报表,此时在主菜单中出现报表菜单。
(2)进入快速报表设计报表
图8.10报表设计器
报表菜单快速报表,打开打开对话框在文件列表框中选学生表确定,打开快速报表对话框如图8.11所示选标题复选框,选添加别名,选将表添加到数据源环境中选字段布局中左侧按钮(字段布局共有左右两个大按钮,左侧按钮是产生列报表,右侧大按钮则产生字段在报表中竖向排列的行报表)字段,打开字段选择对话框,将所有字段列表框中的字段移到选定字段列表框中,如图8.12所示确定,返回快速报表对话框确定,此时屏幕出现快速报表如图8.13所示。
图8.11快速报表对话框
图8.12字段选择对话框
图8.13快速报表
图8.14预览报表
(3)预览报表
显示菜单预览或单击常用工具栏中的打印按钮,在屏幕上出现预览报表如图8.14所示关闭预览。
(4)保存报表
文件菜单保存,将该报表以学生快速报表.frx文件存入磁盘。
8.2.4用报表设计器创建报表
报表设计器可以创建比报表向导、快速报表创建的报表更灵活多样、更复杂的报表,它还可以将已由报表向导、快速报表创建的报表进行修改。
1.报表设计器简介
(1)打开报表设计器
文件菜单新建,打开新建对话框在文件类型中选报表新建文件,打开报表设计器如图8.15所示。
它有三个区域:
1)页标头区:
每页打一次,一般打印报表名及字段名,位置在标题后,页初。
2)细节区:
它是报表的内容区,一般存放记录的内容。
打印的次数由实际输出表中记录数决定,每条记录打印一次,位置在页标头或组标头后。
3)页注脚:
每页打一次,打印在每页的尾部,可以用来打印小计、页号等。
除此之外,报表还可有如表8.2所示的6个带区。
表8.2报表带区的建立和作用
带区名称
带区产生与删除
打印周期
打印位置
标题
从报表菜单中选标题/总结命令
每个报表一次
报表的开头或独占一页
列标头
从文件菜单中选页面设置命令设置列数
在多列报表中每列一次
页标头后
组标头
从报表菜单中选数据分组命令
每组一次
页标头、组标头、组注脚后
组注脚
从报表菜单中选数据分组命令
每组一次
细节后
列注脚
从文件菜单中选页面设置命令设置列数
每列一次
页脚注前
总结
从报表菜单中选标题/总结
每个报表一次
组脚注后,可占一页
(2)报表设计器工具栏
如图8.15所示,从左至右按钮分别为数据分组、数据环境、报表控件工具栏、调色板工具拦、布局工具栏按钮。
图8.15报表设计器工具栏图8.16报表控件工具栏
(3)报表控件工具栏
如图8.16所示,从左至右按钮为:
1)选定对象按钮:
与表单中的选定按钮用法一样。
2)标签按钮:
为报表创建一个标签控件。
3)域控件按钮:
在报表上创建一个字段、内存变量、表达式。
4)线条:
用于画线条。
5)矩形:
可画矩形。
6)圆角矩形:
可画圆角矩形。
7)图片/Activex绑定控件:
用于显示图片或通用字段的内容。
8)按钮锁定:
允许添加多个同类型控件,而不需多次选中该按钮。
(4)报表数据源
单击报表设计器工具栏数据环境按钮或显示菜单的数据环境命令,和前面表单中的数据源用法是一样的。
在数据环境中单击右键打开快捷菜单属性,打开属性窗口如图8.17所示。
当数据环境中已有表时,在属性窗口中的对象下拉列表框中选cursor1对象,此时该对象指向当前表,可对当前表相关的属性进行设置,如用order属性可设置表的一个索引,报表可按表的索引顺序输出记录。
图8.17属性窗口
(5)关于数据分组
是指对报表进行分组。
可由报表菜单数据分组或报表设计器工具栏的数据分组打开数据分组对话框,如图8.18所示。
图8.18数据分组对话框
图8.19页面设置对话框
(6)报表的输出
1)报表的页面设计
文件菜单页面设置,打开页面设置对话框如图8.19所示,可按对话框的相应提示进行各项设置。
2)报表的输出
文件菜单打印或常用工具栏的打印按钮,打开打印对话框可进行相应设置确定即可。
2.举例
例8.7用表创建学生自然情况表,将学生表复制成学生4表(本例用学生4表创建报表)。
操作步骤如下:
(1)打开报表设计器
文件菜单新建,打开新建对话框在文件类型中选报表新建文件,打开报表设计器。
(2)为报表添加标题带区
报表菜单标题/总结,打开标题/总结对话框如图8.20所示选中标题带区复选框确定,报表设计器界面如图8.21所示。
图8.20标题/总结对话框
图8.21具有标题带区的报表设计器
(3)为报表添加标题
单击报表控件工具栏标签按钮在标题带区的适当位置单击左键确定标题位置输入学生自然情况表。
(4)对标题字体进行修饰
选中标题学生自然情况表格式菜单字体,打开字体对话框选字体为隶书,字型为粗体,大小为小二号,颜色为红色确定。
(5)设置页标头
单击报表设计器工具栏中的标签按钮,分别在页标头区输入学号、姓名、性别、入学成绩。
(6)打开数据环境
显示菜单数据环境,打开数据环境设计器在数据环境中单击右键,打开快捷菜单添加,打开”打开对话框”在文件列表框中选学生4表确定,显示添加表或视图对话框关闭。
(7)设置细节
将数据环境中学生4表的学号、姓名、性别、入学成绩字段拖放到细节带区,若某个字段放置位置不令人满意,可在细节带区单击该字段使它的周边出现8个黑色方框,此时可用光标键(或鼠标)移动它的位置。
(8)设置报表输出顺序
在数据环境中右键,打开快捷菜单属性,打开属性窗口在对象下拉列表框中选cursor1在属性列表框中找order属性并选中在属性设置框中选学号关闭属性窗口。
(9)设置页注脚
为报表填日期和页码。
1)日期单击报表控件工具栏中的域控件在细节带区适当位置单击,打开报表表达式对话框如图8.22所示单击表达式文本框右侧的对话框按钮,打开表达式生成器对话框如图8.23所示在日期下拉列表框中选DATE()函数双击确定,返回到报表表达式对话框确定。
图8.22报表表达式对话框图8.23表达式生成器
2)页码单击报表控件工具栏中的域控件在细节带区适当位置单击,打开报表表达式对话框单击表达式文本框右侧的对话框按钮,打开表达式生成器在变量列表框下选pageno双击确定,返回到报表表达式对话框确定。
(10)保存报表
文件菜单保存,打开另存为对话框在保存报表为文本框中输入学生4报表保存。
(11)预览报表
单击常用工具栏中的预览按钮,预览结果如图8.24所示关闭预览。
图8.24学生4报表预览结果
此题只是做了一个简单的报表,读者若需要做复杂些的报表如数据分组等,可按前面介绍的方法制作。
8.2.5用命令打印或预览报表
格式:
REPORTFORM<报表文件名>[ENVIRONMENT][PRIVIEW][TOPRINT][PROMPT]
功能:
预览或打印由报表文件名指定的报表。
说明:
1)[ENVIRONMENT]用于恢复存储在报表文件中的环境信息。
2)[PRIVIEW]预览报表。
3)[TOPRINT]打印报表,若选[PROMPT]在打印前打开设置打印机的对话框,用户可以进行相应的设置。
8.3小结
本章介绍了用编程打印输出报表和用VFP本身的报表功能输出报表,这两种方法都各有特点。
对于打印输出要求比较复杂,在用VFP提供的报表解决不了时,只能用编程方法制作报表。
对于一个模式相对简单的报表,可选用VFP报表中的报表向导、快速报表、报表设计三钟方法制作,这种方法不用编程,重点是用可视化工具制作。
习题与上机
1.选择题
(1)报表的基本带区中包括()
A标题,页注脚,总结带区B页标头,组标头,细节带区
C列标头,细节,总结带区D页标头,细节,页注脚带区
(2)报表文件的扩展名是()
AFRXBRPTCRPXDREP
(3)在报表设计器中可以使用的控件是()
A标签,列表框,文本框B标签,域,组合框
C标签,域,线条D线条,数据源,组合框
(4)打印或打印预览报表的命令是()
ADOREPORTBREPORTFORM
CTOPRZNTDRUNREPORT
(5)在用报表向导创建报表时,选定用语排行记录最多可选牵引字段数是()
A1B3C4D2
2.建立报表
(1)根据学生,学生成绩,学生成绩F表,用报表向导建立一个学生管理报表,选定字段为学号,姓名,入学成绩,数学,VFP,英语,原理,网络,C语言。
(2)根据学生表用快速报表创建一个学生自然情况报表。
(3)根据学生表用报表设计器创建一个学生情况报表。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP6教程第8章 报表 VFP6 教程