1、报表设计,本 章 要 点,创建报表 设计报表 创建报表控件 报表输出,报表包括两个基本组成部分:数据源和布局。数据源通常是数据库中的表,也可以是视图、查询或临时表;报表布局定义了报表的打印格式。视图和查询将筛选、排序、分组数据库中的数据。在定义了一个表或视图或查询之后,便可以创建报表或标签。建立报表的过程包括定义报表的样式以及把这个定义存储在扩展名为FRX的文件中。在报表文件中用户要指定打印字段、打印的文本以及信息在页面上的位置。报表文件不存储每个数据字段的值,只存储一个特定报表的位置和格式信息。,VFP提供了3种创建报表的方法:(1)使用报表向导创建报表,有它自动提供报表设计器的定制功能,这
2、是创建报表最简单途径。(2)使用报表设计器创建自定义报表。(3)用快速报表命令为一个表创建一个简单报表,这是报表设计器创建报表的特例。报表设计,一般有下列5个主要步骤:(1)确定要创建的报表类型。(2)创建报表布局文件。(3)修改布局文件。(4)定制报表布局。(5)预览和打印报表。,1 创建报表,在建立报表之前,应对所设计的报表有一个整体的规划,即确定所需的常规格式,如:报表的格式、目的,要在报表中显示哪些数据等等。常规报表布局的一些说明及一般用途:列报表:每行是一条记录,每个字段按水平方向放置,是最常用的报表,适应于财政报表、存货清单等统计报表。行报表:每条记录的所有字段在一侧竖直放置。一对
3、多报表:一个报表就是一条记录或一对多关系,主要用于发票和会计报表。多列报表(多栏报表):多列报表是列报表的扩展,报表中的每条记录的字段沿左边缘竖直放置。标签:是一种特殊的报表,它具有多列记录,每条记录的字段沿左边缘竖直放置,例如邮件标签和名字标签。,(一)选择报表类型,1.1 创建报表文件,(二)创建报表布局文件,当选定了满足要求的常规布局后,便可以创建报表布局文件。VFP提供了3种途径来交互创建报表的布局:(1)用报表向导创建简单的单表或多表报表。(2)用快速报表从单表中创建一个简单报表。(3)用报表设计器修改已有的报表或创建自己的报表。以上每种方法创建的报表布局文件都可以用“报表设计器”进
4、行修改。“报表向导”是创建报表的最简单途径,它自动提供很多“报表设计器”的定制功能。“快速报表”是创建简单布局的最迅速途径。如果直接在“报表设计器”内创建报表,“报表设计器”提供一个空白布局。除上述几种方法外,还可以通过VFP语言来创建报表的布局。,1用报表向导创建报表用“报表向导”创建报表极为方便,用户根据“报表向导”提示的对话框信息包括向导选择、数据库和表选择两个必选项以及分组记录、报表样式选择、定义报表布局、排序记录等可选项的选择。最后询问保存的报表文件名,创建一基本报表文件。 2创建快速报表“快速报表”是一项省时的功能,它自动创建简单报表布局。可以选择基本的报表组件,然后根据选择创建布
5、局。如果已有的报表中“细节”带区是空的,就可以在其中使用“快速报表”。如果“页标头”带区已包含控件,“快速报表”将保留它们。,3.用报表设计器创建报表如果用户不想使用“报表向导”或“快速报表”,也可以使用“报表设计器”的各种功能从空白报表布局开始,然后自己添加各种组件。报表创建也可使用命令方式,格式如下:CREATE REPORT4创建标签布局标签是多列报表布局,它具有为匹配特定标签而对列的特殊设置。在VFP中,可以使用“标签向导”或“标签设计器”迅速创建标签,也可以通过命令创建标签。标签设计器是报表设计器的一部分,它们使用相同的莱单和工具栏。使用命令也可以打开“标签设计器”,其格式如下:CR
6、EATE LABEL,2 设计报表报表的设计在报表设计器中进行,在其中可以设置报表的数据源、设计报表的带区、添加报表的控件和设计数据分组等。报表的数据源的设置通过数据环境设计器来完成。2.1设计报表带区报表设计主要是对控件和布局的设计。布局的设计主要是带区设计。带区的主要作用是控制数据在页面上的打印位置。它可以包含文本、来自表字段中的数据、计算值、用户自定义函数以及图片、线条和线框等。报表上可以有各种不同类型的带区,打印或预览报表时,系统会以不同的方式处理各个带区的数据。在带区中,可以插入各种控件,如:标签、字段、变量和表达式等,还可以添加直线、矩形以及圆角矩形等控件,也可以包含图片(OLE
7、绑定型控件)。,一、基本带区报表设计器打开时,窗口默认三个基本带区:页标头、细节和页注脚。 (1)页标头带区:位于页标头标识栏的上方,可用于设置报表名称、字段标题以及需要的图形。 (2)细节带区:包括从细节标识栏到在它上方的相邻标识栏之间的区域。设置在该区的控件能多次打印。当记录较多或细节带区高度较大,以至一个页面容纳不下时,系统会输出多个页面,产生多页报表。此时可用系统内存变量PAGEENO作为报表控件,自动计数来表示页号。 (3)页注脚带区:包括从页注脚标识栏到在它上方的相邻标识栏之间的区域。包含出现在页面底部的一些信息(如制表日期、页码、节等等)。,2调整带区高度 (1)粗调法:用鼠标左
8、键按住相应的隔符栏,将带区栏拖动到适当高度。 (2)微调法:双击需要调整高度的带区标识栏,系统将显示一个对话框,在该对话框中,直接输入所需高度的数值,或者调节微调器的数值。 注意:不能使带区高度小于布局中控件的高度。可以把控件移进带区内,然后减少带区高度。,三、标题与总结带区“报表”菜单的“标题/总结”命令,用于在报表设计器窗口增删标题带区或总结带区。,1、报表标题带区对于任何报表文件,标题带区的内容最先打印且打印一次,一般用来设置报表的总标题或设计报表封面。2、报表总结带区对于任何报表文件,该带区的内容也仅打印一次,并且在页注脚带区打印之前,紧接在细节带区的输出之后打印。该带区一般用来打印统
9、计数据。若要从报表设计器窗口取消标题带区或总结带区,只需取消标题带区复选框或总结带区复选框的选定即可。,四、列标头和列注脚带区设置列标头和列注脚带区可用于创建多栏报表。从“文件”菜单中选择“页面设置”命令,把“列数”的值调整为大于1,报表设计器中将增加一个“列标头”和“列注脚”带区。,五、数据分组与组标头组注脚带区若要打印分类表、汇总表等报表,在设计时需将数据分组。只有对表的索引字段设置数据分组才能得到预想的效果。表中索引关键字相同值的记录集中在一起,报表中的数据才能组织到一起。VFP对数据分组只需定义一个分组表达式,实际上分组表达式就是字段表达式。每一组数据将根据细节带区的控件设计来打印,并
10、在打印内容前加上组标头的内容,打印内容后加上组注脚的内容。,“数据分组”对话框 (1)“分组表达式”列表:一个分组表达式定义一个组,这些组以嵌套形式组织。嵌套的次序与列表中分组表达式的顺序一致。分组表达式左边的按钮可改变排列次序。一个报表内最多可以定义20级的数据分组。 (2)“每组从新的一列上开始”复选框:选定该复选框能使不同的组值在不同的列打印。 (3)“每组从新的一页上开始”复选框:选定该复选框能使不同的组值在不同的页打印。 (4)“每组的页号重新从1开始”复选框:选定该复选框能在组值改变时将页号置1。设置好数据分组后,报表设计器窗口中就添加了组标头和组注脚带区,并在带区标识栏上标出了所
11、定义的表达式。,3 创建报表控件在“报表设计器”中,为报表新设置的带区是空白的,通过在报表中添加控件,可以安排所要打印的内容。一、报表控件报表控件可以通过报表控件工具栏来添加。报表控件工具栏中包含6个控件按钮。创建报表控件与创建表单控件的方法相似。报表设计器没有属性窗口,报表控件只能在规定的对话框中设置特性。,1.标签控件标签控件在报表中的使用是相当广泛的。说明性的文字或标题文本就是使用标签控件来完成的。 (1)插入标签控件只要在“报表控件”工具栏中单击“标签”按钮,然后在报表的指定位置上单击鼠标,便出现一个插入点,即可在当前位置上输入文本。 (2)更改字体选定要更改的控件,从“格式”菜单中选
12、定“字体”,出现“字体”对话框。便可更改字体和大小。,2、线条、矩形和圆角矩形使用线条、矩形和圆角矩形控件在报表适当的位置上添加相应的图形线条可以增加视觉效果。(1)添加控件在“报表控件”工具栏中单击“线条”、“矩形”或“圆角矩形”按钮,然后在报表的一个带区中拖曳光标,将分别生成线条、矩形或圆角矩形。(2)更改样式双击每一个控件可以弹出相应的对话框,在对话框中可以更改垂直、水平线条、矩形和圆角矩形所用线条的粗细,也可以更改线条的样式,还可以设置圆角矩形的圆角样式。,3、域控件域控件按钮可用来创建字段、函数、系统变量、报表变量、表达式等控件,也称为表达式控件。向报表中添加域控件有两种方法:(1)
13、从“数据环境设计器”中添加:右击报表,从快捷菜单中选择“数据环境”,打开报表的“数据环境设计器”窗口,选择要使用的表或视图,然后把相应的字段拖曳到报表指定的带区中即可。(2)直接使用“报表控件”工具栏中的“域控件”按钮:单击该按钮,然后在报表带区的指定位置上单击鼠标,将弹出“报表表达式”对话框, 其中:表达式文本框:用于键入表达式,也可通过其右侧的对话框按钮打开表达式生成器来设置表达式。,格式文本框:用于为表达式键入输出格式符,也可通过其右侧的对话框按钮打开格式对话框来设置格式。计算按钮:用于打开计算字段对话框,以便为控件指定统计类型和范围。主要由两部分组成。重置组合框该组合框用于选定控件计算
14、的复零时刻,包括的选项如下:报表尾选项:此为默认值,在报表打印结束时将控件计算复零。页尾选项:在报表每页打印结束时将控件计算复零。列尾选项:在多列打印中,表示每一列打印结束时将控件计算复零。,计算区该区包括8个选项按钮,用户可为控件从中选定一项要执行的计算,也可指定不进行计算。不计算:对控件不进行计算,直接打印表达式值。此为默认值。计数:用于计算并返回表达式出现的次数,此时不返回表达式的值。总和:用于计算表达式的总和。平均值:用于计算表达式的算术平均值。最小值:用于计算表达式的最小值。最大值:用于计算表达式的最大值。标准误差:用于计算表达式的方差的平方根。方差:用于衡量各表达式值与平均值的偏离
15、程度。上述计算可用于整个报表、每组、每页或每列,计算范围与重置框中的选择有关。,打印条件按钮:用于打开打印条件对话框,该对话框指定报表的打印条件及信息带,以便为控件指定打印的时机。,“打印重复值”选项区选定“否”选项按钮表示控件总是打印,此为默认状态。选定“是”选项按钮表示仅当控件值改变时才会打印,即不打印重复值,打印位置将留空。“有条件打印”区第一个复选框:用于指定在新页或新列的第一个完整信息带内打印。第二个复选框:选定该复选框后,再在其右边的组合框中选出一个组,则当组值改变时就会打印。第三个复选框:选定该复选框后,当细节带区中的打印内容已满一行或一列而换到另一页或另一列时就会打印。,“若是
16、空白行则删除”复选框:选定该复选框,就会删除不被打印的控件所在行。“仅当下列表达式为真时打印”文本框:用于键入一个表达式,或利用对话框按钮显示表达式生成器来设置表达式。当表达式的值为真时控件才被打印,否则不打印。,“溢出时伸展”复选框:可用于数据的折行打印。当数据长于字段控件宽度时,多余部分能在垂直方向向下延伸打印。域控件位置选项按钮组:选定“浮动”选项指定域控件相对于周围域控件的大小浮动;“相对于带区顶端固定”选项可使域控件在“报表设计器”中保持固定的位置,并维持其相对于带区顶端的位置;“相对于带区底端固定”选项可使字段在“报表设计器”中保持固定的位置,并维持其相对于带区底端的位置。,4.O
17、LE对象报表也能够处理OLE对象,一个OLE对象可以是图片、声音、文档等等。在“报表控件”工具栏中单击“图片/ACTIVEX绑定控件”按钮,在报表带区内单击并拖动鼠标拉出图片框,同时弹出“报表图片”对话框,其中图片来源有文件和字段两种形式。 插入图片:可以插入图片作为报表的一部分。图片文件可以是.JPG、.GIF、.BMP或.ICO文件。 添加通用字段:一个文件内的图片是静态的,它不随每条记录或每组记录的变化而更改。如果想根据记录更改显示,可在报表中插入包含OLE对象的通用型字段。,裁剪图片:系统默认“裁剪图片”选项,图片将以图文框的大小显示图片。在这种情况下,可能因为图文框太小而只显示部分图
18、片。缩放图片,保留形状:若要在图文框中放置一个完整、不变形的图片。则应选择此选项。但是在这种情况下,图片可能无法填满整个图文框。缩放图片,填充图文框:若要使图片填满整个图文框,则应选择此选项。但是在这种情况下,图片可能会改变。,裁剪和连接字符表达式若要在表达式生成器中迅速地裁剪和连接字符表达式,可以在字符形式之间设置逗号,逗号前面表达式的值被裁剪掉。若被裁剪值的长度大于零,也可以使用分号将表达式放置在新一行上。附注:当不希望在值中包含标点符号时,可以使用这些功能。如果使用这些方法,请确保把字段设置成“溢出时伸展”。 插入当前日期可以插人一个字段控件打印当前日期。步骤:从报表控件工具栏中,插人一
19、个“字段”控件。在“报表表达式”对话框中,选择“表达式”框后的三点按钮。在表达式生成器中,从“日期”框中选定DATE()。,手稿页码“页标头”或“页注脚”带区中通常包含了页码。如果使用向导或快速报表,页码将插入到“页注脚”带区。若要插人页码,请按以下步骤进行:从报表控件工具栏中,插入“字段”控件。从“报表表达式”对话框中,选择“表达式”框后面的三点按钮。在表达式生成器中,从“变量”列表中选择。附注:可以用该过程向报表中插入“变量”列表中系统内存变量。,修改报表布局文件如果已有空白报表或标签,或者已由向导或快速报表生成了一个报表,但它不十分满足要求,则可以在报表设计器中修改它。可以在项目管理器中
20、选择“修改“按钮来打开报表设计器,也可以使用MODIFY REPORT或MODIFY LABEL命令打开报表或标签设计器。选择和移动报表控件时可以在控件周围通过拖动手柄画出选择框。可以选择多个控件,也可以按住SHIFT键,并单击各控件。选择句柄将出现在每个控件周围。当它们被选择后,可以作为一组移动、复制或删除。,4 报表输出设计报表的最终目的是要按照一定的格式输出符合要求的数据。报表文件的扩展名为.FRX,该文件不存储每个数据字段的值,只存储数据源的位置和格式信息。每个报表文件还带有扩展名为FRT的相关文件。(1)设置报表的页面从“文件”菜单中选择“页面设置”,在打开的对话框中可以设置页边距、纸张类型和所需的布局;还可选择纸张大小、打印方向等。,(2)预览报表为确保报表正确输出,使用“预览”功能在屏幕上查看最终的页面设计是否符合设计要求。“显示” “预览”,或右击“报表设计器” 选择“预览”命令,也可单击“常用”工具栏中的“打印预览”按钮。(3)打印输出报表打印报表,通常先打开要打印的报表,单击“常用”工具栏中的“运行”按钮,或者从“文件”菜单中选择“打印”命令,或在“报表设计器”中单击鼠标右键并从弹出的快捷菜单中选择“打印”命令,系统将弹出“打印” 对话框。在命令窗口或程序设计中使用 REPORT FORM 命令也可打印指定的报表。,