1、第九章 报表设计,http:/V 报表概述,报表文件是用于打印输出数据的。,http:/V Visual FoxPro提供了列报表、行报表、一对多报表、多栏报表等四种常规布局。 列报表:每行是一条记录,各字段按水平方向排列,就象在浏览窗口浏览一个表时的效果,见图9-1(a)。 行报表:一条记录由若干行组成,各字段按垂直方向排列,就象以append方式追加记录时的效果,见图9-1(b)。 一对多报表:反映一对多的关系。 多栏报表:可以看成是水平排列的多个行布局,同一页面上分多栏,每一栏可按列报表或行报表形式打印,见图9-1(c)。,http:/V 年龄 姓名 20080001 18 张三 200
2、80002 19 金明 20080003 18 李芳,学号 20080001 年龄 18 姓名 张三 学号 20080002 年龄 19 姓名 金明 学号 20080003 年龄 18 姓名 李芳,学号 20080001 学号 20080003 年龄 18 年龄 18 姓名 张三 姓名 李芳 学号 20080002 年龄 19 姓名 金明,(a)列报表,(c)多栏报表,(b)行报表,http:/V 用户在设计报表布局时,并不直接在页面上添加数据,而是为要输出的字段预留一个位置,采用添加“域控件”的方式来实现,就如同在表单设计中用文本框控件来显示某个字段一样。 在打印时,域控件从对应的字段中取得
3、具体数据填充在它所在的位置。,http:/V 利用快速报表设计报表 利用报表设计器手工设计报表。,http:/V 报表向导,使用Visual FoxPro提供的报表向导,只需回答一些问题,就可以快速创建报表布局。 启动报表向导的方法: (1)打开菜单“文件”“新建”,在文件类型栏中选择“报表”,然后单击“向导”按钮。 (2)打开项目管理器,选择“文档”中的“报表”项,单击“新建”按钮,再弹出的“新建报表”对话框中,再单击“报表向导”按钮。 (3)打开“工具”菜单中的“向导”,选择“报表”。 (4)直接单击工具栏上的报表图标,也可以启动向导。,http:/V 简单报表,【例9-1】使用报表向导设
4、计简单报表要求:以学生成绩管理数据库中的学生表为数据源,设计一个报表用于打印学生基本信息。 操作步骤: 1选择系统菜单“文件”“新建”,在弹出的对话框中选择“报表”,然后单击“向导”按钮。 2在弹出的“向导选取”对话框中选择“报表向导”,表示创建一个单表的数据报表,单击“确定”。,http:/V 5向导步骤3选择报表样式,如图9-7所示 这里给出了五种样式,单击任一种样式,左上角都会显示出对应的略图,选择“帐务式”,单击“下一步”。,http:/V 6 - 完成,在“报表标题”中输入标题“学生基本信息表”,选择“保存报表以备将来使用”。单击“预览”按钮,进入预览窗口,可以看到将来打印出来的页面
5、效果。,http:/V 分组和总结报表,分组报表可以对打印记录进行归类,例如,把同一个专业的学生打印在一起,或者把所学生按性别归类,就可以设计分组报表进行打印。 总结报表可以对打印的字段自动进行统计,例如我们希望打印出所有同学的入学平均分和最高分。,http:/V 操作步骤: 在案例9-1的第4步,从下拉列表框1中选择专业编号,其余步骤相同,如图9-13所示,则建立了一个简单的分组报表,预览结果如图9-14所示。 可以看到,在同一专业编号下打印出该专业的所有学生。如果选择性别作为分组条件,则所有男生和女生将分别归为一组。也可以先按专业分组,同一专业下再按性别分组,方法是专业编号为第一层分组条件
6、,性别作为第二层分组条件。向导允许最多三个分组层次。,http:/V 图中可以看到总结提供了对字段的五种操作,这里勾选“总分”的最小值和最大值并选中“只包含总结”,然后确定。其余步骤相同。则建立了一个总结报表,如图9-14所示。,http:/V 一对多报表,一对多报表的数据源,包含父表和子表两个表。它们之间是一对多的关系。 例如,针对学生成绩管理系统,要求输出这样一个报表,报表上既有学生的学号和姓名,还要每个学生的成绩。这些字段分别在学生表和成绩表两个表中,学生表中含有“学号”字段,其值是不重复的,成绩表中也含有“学号”字段,但表中学号是重复的,因为每个学生有多门课程的成绩,学生表和成绩表通过
7、学号建立起一对多的关系,其中学生表是父表,成绩表是子表。,http:/V 操作步骤: 1在“向导选取”对话框中选择“一对多报表向导”,接下来进入向导的六个步骤。,http:/V 5其余步骤同建立简单报表相似。,http:/V 报表设计器,使用报表向导和快速报表生成的报表样式较为简单,多数情况下需要进行修改才能满足实际的需要。 Visual FoxPro提供的报表设计器是一种辅助制表工具,具有报表设计、显示和打印等功能。可以通过直观的操作来设计新报表或修改已有的报表,包括确定数据源,增加和删除一些字段,修改字型和字号,在页面上增添一些线条和图案等。,http:/V 报表设计器介绍,选择菜单“文件
8、”“新建”,选择“报表”文件类型后单击“新建文件”,将打开报表设计器窗口。报表设计器将页面分成不同的带区,新建的空白报表具有页标头、细节、页脚注三个基本带区,如图9-20所示。,http:/V 报表设计器启动后,系统菜单中将增加报表菜单,并在显示、格式、文件等菜单中添加一些命令。另外,有报表控件工具栏、布局工具栏和调色板工具栏与报表设计器窗口相互配合,组成设计与打印报表的方便的工具,如图9-21所示。,http:/V 报表菜单及相关工具栏,http:/V 创建和修改报表,通过报表设计器建立报表的主要步骤是: (1)在数据环境中添加数据源; (2)在布局带区中添加各种报表控件; (3)预览和打印
9、。,http:/V 操作步骤: 1打开报表设计器窗口。 2在报表设计器窗口单击右键,在快捷菜单中选定“数据环境”命令,弹出数据环境设计器窗口,如图9-22所示。,http:/V “数据环境设计器”窗口,http:/V 字段布局按钮:左按钮表示按列布局,右按钮表示按行布局。 标题复选框:用于产生相应于每个字段的标题。 添加别名复选框:选择该框。 将表添加到数据环境中复选框:选定可将当前打开的表添加到数据环境中。通常这三个复选框都应该选定。,http:/V “字段选择器”对话框,http:/V “报表设计器”窗口,http:/V 8在报表设计器窗口单击右键,在快捷菜单选择“预览”命令,可以查看到效
10、果。,http:/V 操作步骤: 1打开报表文件students2.frx,启动报表设计器窗口; 2选择系统的报表菜单下的“标题/总结”命令,在弹出的对话框中选中“标题”复选框,然后确定,见图9-27。这时设计器窗口中添加了一个标题带区。,http:/V 4拖动带区标识栏,适当拉大页标头带区,使用标签控件输入“学分”,作为要添加的字段的标题,放置在“学时数”右边。,http:/V 单击表达式文本框后的按钮,弹出“表达式生成器”对话框,双击字段列表框中的“学分”,确定后返回报表表达式对话框。就会看到表达式文本框中加入了所选字段,单击确定完成,见图9-31和图9-32。,http:/V “页面设置
11、”对话框,http:/V 设置标签和域控件的字体格式,http:/V 报表设计器高级操作,一、带区规划 默认情况下,报表设计器显示三个基本带区:页标头、细节和页注脚,案例9-5中我们还添加过标题带区。报表设计器可以建立9种类型的报表带区,有关这些带区的作用设置方法如表9-2所示。 以上带区中,页标头和页脚注、列标头和列脚注、组标头和组脚注总是成对出现。在一份报表中,三个基本带区总是存在的,其他带区则根据需要添加。,http:/V 报表带区的作用及设置,http:/V 除设置页边距外,在页面设置对话框中还包含着对页面的各种设置。 列数微调控制用于设定每一报表的列数。当列数大于1时,将建立多栏报表
12、。 宽度微调控制和间隔微调控制指定列宽及列与列之间的距离,单位是厘米或英寸。 打印区域单选按钮组的可打印页单选按钮,整页单选按钮表示将整个纸张作为报表的打印区域。 打印顺序含按记录纵向打印和横向打印两个按钮,他们在列数大于1的时候有效,用以确定打印记录的顺序。,http:/V 数据环境通过如下方式管理报表的数据源: (1)打开或运行报表时打开表或视图。 (2)基于相关表或视图收集报表所需数据集合。 (3)关闭或释放报表时关闭表。 使用报表向导和快速报表功能时,都会自动向数据环境中添加数据源。,http:/V 当报表的数据源包含多个表时,可逐一加入数据环境,并为它们建立关系。,http:/V 控
13、件工具栏提供了六种控件,前面我们已经使用了诸如域控件、标签、线条等。,http:/V 输出报表,报表文件只是一个输出报表的格式框架,可以程序中调用报表文件进行预览和打印等操作。,http:/V 菜单方式,【例9-7】用菜单操作打印报表 操作步骤: 1.在报表设计器打开的情况下,从报表菜单选择运行报表命令,或者从文件菜单选择打印命令都会弹出打印对话框(如图9-40),单击确定后即可开始打印。,图9-40 打印窗口,http:/V 在打印之前还可以进一步筛选数据,方法是:单击打印对话框中的选项按钮,弹出打印选项对话框(如图9-41),在该对话框中单击选项按钮,弹出报表和标签打印选项对话框(如图9-42),即可用于筛选数据。这里所作的筛选,相当于命令方式中的范围和FOR子句的设置。,http:/V 命令方式,在程序中调用报表文件进行打印或预览,使用以下命令。 命令格式:REPORT FORM 范围 FOR PREVIEW TO PRINTER 【例9-8】预览报表“学生信息.frx” REPORT FORM 学生信息 ALL PREVIEW 【例9-9】打印报表“学生信息.frx” REPORT FORM 学生信息 ALL TO PRINTER NOCONSOLE,http:/V 报表设计完成后,可使用菜单及命令两种方式进行报表的输出。,谢谢,