VFP6.0VFP6.0简明教程第明教程第7 7章章- -报表和表和标签目 录上一页下一页退 出本章要点本章要点7.1 7.1 报表设计与应用报表设计与应用 7.1.1 7.1.1 报表向导7.1.2 报表设计器报表设计器7.1.3 快速报表快速报表7.1.4 设计报表设计报表7.1.5 报表输出报表输出7.2 标签的设计与使用标签的设计与使用2目 录上一页下一页退 出7.1 报表设计与应用 Visual FoxPro提供了不同层次的多种报表方法:(1)利用带TO PRINTER子句的LIST | DISPLAY命令这是一种最简单的报表输出方法2)用CREATE REPORT<报表文件名> FROM <数据库文件名>命令产生简单的报表3)编程产生报表这种方法最具灵活性,可以设计任何形式的报表,只是设计程序的工作复杂4)利用Visual FoxPro生成报表工具:报表向导、快速报表和报表设计器,利用报表工具可以设计各种格式的报表本节主要介绍用报表工具产生报表 3目 录上一页下一页退 出7.1.1 报表向导启动表单向导有以下四种途径:(1)打开“项目管理器”,选择“文档”选项卡,从中选择“报表”。
然后单击“新建”按钮在弹出的“新建表单”对话框中单击“报表向导”按钮2)在系统菜单中选择【文件】|【新建】命令,或者单击工具栏上的“新建”按钮,打开“新建”对话框,在文件类型栏中选择“报表”然后单击“向导”按钮3)在系统菜单中选择【工具】|【向导】|【报表】命令4目 录上一页下一页退 出【例7-1】利用报表向导设计学生成绩报表,要求输出学生学号、姓名、课程代号、成绩并保存为“REPORT1” ① 启动报表向导 :因为本例报表数据基于两个表(STU和gre),所以在“向导选取”对话框中应选择“一对多报表向导” ② 选择父表字段: 在如图中选择数据表STU,从“可用字段”列表中选择“学号”,单击左边的左箭头按钮,或者直接双击“学号”字段,该字段会自动出现在“选定字段”列表中,同样方法添加姓名、系别字段 5目 录上一页下一页退 出③ 选择子表字段:在如图中选择GRE表,并把课程代号和成绩字段加入到“选定字段”列中单击“下一步”按钮 6目 录上一页下一页退 出④ 为父__子表建立关系:在如图中,在STU表中选择“学号”,在GRE表中也选择“学号”,这样在STU表和GRE表之间便依学号字段建立了关系。
单击“下一步”按钮,打开排序对话框 7目 录上一页下一页退 出⑤ 排序:在如图排序对话框中选择“学号”,单击“添加”按钮,这样报表将学号进行排序单击“下一步”按钮,出现 “选择样式”对话框 8目 录上一页下一页退 出⑥ 选择样式:在如图“选择样式 ”对话框中选择需要的样式,如“账务式”,选择样式时,对话框左上角可预览样式效果单击“下一步”,打开最后一个对话框 9目 录上一页下一页退 出⑦ 在如图所示对话框中,设置报表标题为“学生成绩报表”,单击“预览”可以观察报表效果,如果满意,单击“完成”按钮,系统会打开另存为对话框,输入报表方件名(report1)后,单击“确定”保存报表由报表向导产生的报表如果不满足要求,可以在报表设计器中作进一步修改 10目 录上一页下一页退 出7.1.2 报表设计器 一、启动报表设计器有多种方法:● 菜单方法:若是新建报表,在系统菜单中选择【文件】|【新建】命令,在文件类型对话框选择“报表”,单击“新建”按钮;若是修改报表,则选择【文件】|【打开】命令,在“打开”对话框中选择要修改的报表文件名,单击“打开”按钮。
● 命令方法:在COMMAND窗口输入如下命令: CREATE REPORT <文件名> &创建新的报表或 MODIFY REPORT <文件名> &打开一个已有的报表● 在项目管理器中,先选择文档标签,然后选择报表,单击“新建”按钮若需修改报表,选择要修改的报表,单击“修改”按钮 11目 录上一页下一页退 出二、报表生成器组成报表设计器如图所示,默认包括3个带区:页标头(Page Header)、细节(Detail)和页脚(Page Footer),每个带区的底部显示分隔栏(1)标题(Title):标题区的信息在报表的开始处打印一次2)页标题(Page Header):页标题的内容在报表的每一页开头打印一次 (3)细节(Detail):内容区是报表的主体,用于输出数据库的记录,一般在该区放置数据库字段打印报表时,细节区会包括数据库的所有记录 12目 录上一页下一页退 出(4)页注脚(Page Footer)页脚区的内容在每页的最底部打印,一般包含页码、每页的总结和说明信息等5)总结(Summary)总结只在报表的末尾打印一次,一般利用本区打印总计或平均值等信息。
6)组标头和组注脚带区用于分组报表,组标头在每个分组开始时打印一次,组注脚带区的内容在每个分组结束时打印一次 13目 录上一页下一页退 出(7)列标头和列注脚带区 列标头和列注脚带区主要用于分栏报表,选择【文件】|【页面设置】命令,将打开“页面设置”对话框,将“列数”设置成>1的值,“间隔”稍作调整,单击“确定”,则列标头和列注脚会在报表设计器中出现 (8)调整报表带区高度 将鼠标指针指向某带区分隔条,出现上下双箭头时,按住左键上下拖动分隔条即可改变报表带区高度 14目 录上一页下一页退 出三三.控件的名称和作用.控件的名称和作用“控件工具栏”中控件的名称与作用如图所示 15目 录上一页下一页退 出四.报表设计器工具栏 “报表设计器工具栏 ”中控件的名称与作用如图所示16目 录上一页下一页退 出7.1.3 快速报表 一、快速报表操作步骤:选择主菜单中的【报表】|【快速报表】命令 ,打开“快速报表对话框 ” 字段布局:用以选取字段排列方式 标题:选择此项,字段名将作为列标题出现将表添加到数据环境中:选择此项,则把报表的数据源加到数据环境中 字段:单击该按钮,打开字段选择对话框,用户可以选择报表中将出现哪些字段,在缺省情况下,包括除“通用”字段外的全部字段。
17目 录上一页下一页退 出二、修改用快速报表产生的报表 操作步骤如下: (1)打开要修改的报表(2)添加报表标题① 在系统菜单中选择【报表】|【标题/总结】命令,报表窗口增加两个带区:标题和总结② 选择文本控件,然后在标题带区单击,输入“学生信息”③ 选择“标题”区的文本对象(用鼠标单击),在系统菜单中选择【格式】|【字体】命令,系统会打开一个标准的字体对话框,即可以设置文本的各种属性④ 删除不需要的字段:选择“备注”字段对象,按Delete键18目 录上一页下一页退 出(3)修改列标题 ① 单击原来的列标题,可选择列标题对象,然后按Delete键删除之 ② 选择文本控件,单击页标题区,添加新的标题4)添加表格线 ① 选择线条控件,在页标头区的顶部和底部各画一条横线,每列画一条竖线 ② 选择线条控件,在细节区底部添加一条横线,每列添加一条竖线,注意与页标题区的竖线对直 19目 录上一页下一页退 出7.1.4 设计报表 1.设置报表数据环境 “数据环境设计器”窗口中的数据源将在每次运行报表时打开,而不必以手工方式打开所使用的数据源 数据环境通过下列方式管理报表的数据源:打开或运行报表时打开表或视图;基于相关表或视图收集报表所需数据集合;关闭或释放报表时关闭表或视图。
下面通过实例的方式说明把数据源加入报表数据环境的方法 20目 录上一页下一页退 出【例7-2】为STUDENT数据库设计一个报表:要求打印出学生的学号、姓名、班级、课程名、成绩本例为该报表设置数据环境分析分析:因为学号、姓名、系别来自STU表,课程名来自KEC表,成绩来自GRE表,所以数据源应包括上述三个表:STU、GRE、KEC 21目 录上一页下一页退 出操作步骤:(1)打开“报表设计器”生成一个空报表,在系统菜单中选择【显示】|【数据环境】系统打开“数据环境设计器”窗口,如图所示 (2)在“数据环境设计”窗口中右击鼠标,从快捷菜单中选择【添加】或在系统菜单中选择【数据环境】|【添加】命令 22目 录上一页下一页退 出(3) 建立表之间的关系 选择STU表的“学号”字段,按住鼠标左键拖曳到SC表的“学号”索引上后松开鼠标 同样的方法,建立SC表与COURSE表之间“课程号”之间的关系 选择表的关系(单击表之间的连线),右击鼠标,在快捷菜单中选择【属性】,打开属性窗口后,设置ONETOMANY属性为TRUE (4)保存报表:单击设计器的关闭按钮,系统会打开“保存”对话框,在对话框中输入文件名:“REPORT3”,单击“保存”按钮 23目 录上一页下一页退 出2.创建报表变量 (1)若已经建立了报表,则先可把报表打开,如果没有建立报表,则新建一个报表。
2)选择系统菜单中的【报表】|【变量】命令,将弹出如图所示的“报表变量”对话框 24目 录上一页下一页退 出(3)在“变量”框中输入一个变量名4)在“要存储的值”框中输入一个变量或其他的表达式,也可以单击后面的按钮,再在弹出的“表达式生成器”中创建一个表达式5)还可以从其列出的七种计算方式中选择一种作为该表达式的计算选项6)如果需要,也可以为所定义的报表变量设定一个初始值 25目 录上一页下一页退 出3.添加报表控件 (1)标签控件 :用于显示静态文本 添加标签控件方法:在“报表控件”中选择“标签按钮”后,移动鼠标到窗口中的合适位置,单击鼠标左键,出现“∣”插入点后输入文本信息 (2)绘图控件 绘图控件包括线条、矩形和圆角矩形在“报表控件”中选择相应的绘图控件,然后在报表的一个带区拖曳鼠标,将生成相应的图形3)域控件 域控件的添加和布局是报表设计的核心,用于打印表或视图中的字段、变量和表达式的计算结果 26目 录上一页下一页退 出① 添加域控件 最方便的做法是右击报表,从快捷菜单中选择 【数据环境】命令,打开报表的“数据环境设计器”窗口,选择要使用的表或视图,然后把相应的字段拖曳到报表指定的带区中即可 另一个方法是使用“报表控件”工具栏中的“域控件”按钮。
单击该按钮,然后在报表带区的指定位置上单击鼠标,系统将显示一个“报表表达式”对话框 可以在“表达式”文本框中输入字段名、变量名或表达式,也可单击右侧“…”按钮,打开“表达式生成器对话框” 27目 录上一页下一页退 出 如果添加的是可计算字段,可在下图中单击“计算”按钮,打开“计算字段”对话框,如图所示用户可以选择表达式的计算方法例如表达式是STU表的“学号”,在此选择“计数”,则报表时按学号统计记录数 28目 录上一页下一页退 出② 定义域控件的格式 双击域控件,可随时打开域控件的“报表表达式”对话框在“报表表达式”对话框中,单击“格式”文本框后面的按钮,系统弹出“格式”对话框 选定所需的类型,然后选取“编辑选项”区域的有关选项 29目 录上一页下一页退 出③ 设置打印条件 单击“报表表达式”对话框中“打印条件”按钮,将显示如图所示的“打印条件”对话框 “有条件打印”区域中包括三个复选框:●“在新页/列的第一个完整信息带内打印”选中,表示在同一页或同一列中不打印重复值,换页或换列后遇到第一条新记录时打印重复值该复选框只在“打印重复值”选择“否”时有效。
●“当此组改变时打印”选中,表示当右边的下拉列表中显示的分组发生变化时,打印重复值该复选框只在“打印重复值”选择“否”并有分组时有效●“当细节区数据溢出到新页/列时打印”复选框选中,表示当细节带区的数据溢出到新页或新列时打印重复值 30目 录上一页下一页退 出添加图片对象 ① 添加图片 在“报表控件”工具栏中单击“图片/ActiveX绑定控件”按钮,在报表的一个带区内单击并拖动鼠标拉出图文框,松开鼠标时将弹出“报表图片”对话框,如图所示 ●插入文件中的图片:在“图片来源”区域选中“文件”,并输入一个图形文件的位置和名称,或单击文本框右边的“…”按钮,打开“打开”对话框,选择一个图片文件 ● 添加图形(通用型)字段:在“报表图片”对话框的“图片来源”区域选择“字段”,在“字段”框中输入字段名,或单击字段框右侧的“…“按钮来选取字段 31目 录上一页下一页退 出② 调整图片 当图片与图文框的大小不一致时,需要在“报表图片”对话框中选择相应的选项来控制图片的显示行为 ●“裁剪图片” :图片将以图文框的大小显示图片 ●“缩放图片,保留形状” :图文框中放置一个完整、不变形的图片在这种情况下,可能无法填满整个图文框 ●“缩放图片,填充图文框”:使图片填满整个图文框 ,在这种情况下,图片纵横比例可能会改变,从面引起图片的变形 32目 录上一页下一页退 出4.报表控件操作与布局 (1)选择控件:用鼠标单击控件可以选定该控件,被选定的控件四周出现8个控点 (2)设置控件字体:选择要设置字体的控件,从系统菜单中选择【格式】|【字体】,将打开标准字体对话框 (3)调整控件的大小:选定控件,拖动控件四周的某个控点,改变控件的宽度和高度(4)控件布局:利用“布局”工具栏中的按钮,可以方便地调整表单窗口中被选中控件的相对大小或位置 33目 录上一页下一页退 出5.设计分组报表 一个报表可以设置一个或多个数据分组,组的分隔基于分组表达式 设置分组表达式:从系统菜单中选择【报表】|【数据分组】命令。
在“分组表达式”框内键入分组表达式,或者单击“…”按钮,在“表达式生成器”对话框中创建表达式 组属性主要用于指定如何分页,在“组属性”区域中有四个复选框,根据不同的报表类型,有的复选取框不可用 34目 录上一页下一页退 出6.分栏报表 从系统菜单中选择【文件】|【页面设置】命令,弹出如图所示的“页面设置”对话框在“列”区域,把“列数“ 微调器的值调整为栏目数,例如列数为2,则将整个页面平均分成两部分,调整列之间的间隔值,如间隔为0.4 设置顺序:在“页面设置”对话框中,单击右面的“自左向右”打印顺序按钮即可 35目 录上一页下一页退 出7.1.5 报表输出报表输出 1.页面设置 ① 设置左边距 从系统菜单中选择【文件】|【页面设置】命令,打开“页面设置”对话框 ,在“左页边距”框中输入“左边距”数值,页面布局将按新的页边距显示 ② 打印设置 在“页面设置”对话框中,单击“打印设置”按钮,打开“打印设置”对话框可以从“大小”列表中选择纸张大小默认的打印方向为纵向,若要改变纸张的方向,可从“方向”区选择横向,再单击“确定”按钮 36目 录上一页下一页退 出2.设计时打印与预览报表 可以从系统菜单中选择【显示】|【预览】命令, 或在“报表设计器”中单击鼠标右键从弹出的快捷菜单中选择【预览】命令, 也可以直接单击“常用”工具栏中的“打印预览”按钮 37目 录上一页下一页退 出3.程序中调用报表 预览预览 REPORT FORM <报表文件名> [ IN SCREEN]/ [WINDOW 表单名] [范围] [FOR 条件表达式] 打印输入报表打印输入报表 REPORT FORM <报表文件名> [范围] [FOR 条件表达式] 输出到指定的文件输出到指定的文件 REPORT FORM <报表文件名> [范围] [FOR 条件表达式] 38目 录上一页下一页退 出7.2 标签的设计与使用标签的设计与使用 在实际应用中并不总是要求数据以表格形式输出,例如个人名片,邮件标签,借书卡片等,往往需要以标签卡片的形式输出某些数据 标签是采用多列报表布局,为匹配特定标签纸而对列作特定设置的报表。
39目 录上一页下一页退 出7.2.1 标签向导标签向导 启动标签向导:进入项目管理器,在“文档”卡中选中“标签”,而后单击“新建”按钮该对话框用于为标签指定数据源 40目 录上一页下一页退 出选择标签类型 :“列”是指沿纸张水平方向打印的标签个数 大小=高*宽41目 录上一页下一页退 出定义标签的布局 在“文本”输入框中可输入任何文字串,例如输入“学生信息卡”,按“添加”按钮可把文字串添加到“选定的字段”框中,成为每张标签上都出现的文字 在“可用字段”框中选中的任何字段,也可以添加到“选中的字段”框 如果想另起一行,可以单击中部的“回车”按钮 42目 录上一页下一页退 出排序 如选择排序字段如“学号”单击“添加”按钮 43目 录上一页下一页退 出7.2.2 标签设计器 进入某项目管理器,选择“文档”卡的“标签”项目,单击“新建”按钮,在“新建标签”对话框中单击“新建标签”按钮 选择标签布局 44目 录上一页下一页退 出“标签设计器”窗口 标签设计器的常规操作与报表设计器完全相同 45目 录上一页下一页退 出7.2.3 标签输出 在设计时预览或打印标签的操作与报表相同在程序或命令窗口中打印标签可用下列命令: LABEL FORM <标签文件名>[范围][FOR 条件][WHILE 条件] [TO PRINTER]在程序或命令窗口中预览标签可用下列命令: LABEL FORM <标签文件名>[范围][FOR 条件][WHILE 条件][ PREVIEW] 46结束结束 。