第十一章 报表设计
11.1 报表设计基础
11.2 创建简单报表
11.3 报表设计器
11.4 报表打印输出
11.5 报表设计示例
在 Visual FoxPro中, 报表是输出数据库中的数据最常用的输出形式 。 在开发应用
系统时, 需要输出大量报表 。 借助于报表设计器, 可以所见即所得地完成报表的
设计 。 设计报表通常包括数据源和布局两部分内容 。 设计报表就是根据报表的数
据源来设计报表的布局 。
11.1 报表设计基础
11.1.1 报表的常规布局
创建报表之前, 首先应确定报表的基本布局 。 报表由表格组成, 表格种类繁多,
如图 11-1所示 。 表 11-1给出了报表的常规布局说明 。
11.1.2 报表设计的步骤
报表包括两个基本组成部分:数据源和布局 。 数据源通常是数据库中的表, 也可
以是视图, 查询或临时表 。 报表布局定义了报表的打印格式 。 只要定义了 —个表
,一个视图或查询后, 便可以创建报表 。
在 Visual FoxPro中, 报表设计通常包括如下四个步骤,
① 决定要创建的报表类型 。
② 创建报表布局文件 。
③ 修改和定制布局文件 。
④ 预览和打印报表 。
图 11-1 报表的几种常规布局
列报表 行报表 一对多报表 多栏报表
1.1.3 创建报表布局文件
报表布局文件用于存储报表的详细说明, 记录了报表中的数据
源, 各元素在页面上的位置等信息 。 报表布局文件的扩展名是
.FRX。
Visual FoxPro提供了三种方法来创建报表的布局,
l 用报表向导创建简单的单表或多表报表 。
l 用, 快速报表, 从单表中创建一个简单报表 。
l 用, 报表设计器, 修改已有的报表或创建空白的报表 。
以上方法所创建的报表布局文件都可以用, 报表设计器, 进行
修改 。, 报表向导, 是创建报表的最简单途径, 它自动提供很多
,报表设计器, 的定制功能 。, 快速报表, 是创建简单布局的最
快速的方法 。 如果直接在, 报表设计器, 内创建报表,, 报表设
计器, 将提供一个空白布局 。
11.2 创建简单报表
11.2.1 创建空白报表
创建报表的方法有以下三种,
l 方法一:, 文件, 菜单 →, 新建, →, 报表, →, 新建文件, 。
l 方法二,CREATE REPORT [<报表文件名 > [.FRX ]]
【 功能 】 创建报表文件 。
【 说明 】 若省略 <报表文件名 >,则 Visual FoxPro以, 报表 1.FRX”为默认文件
名 。
l 方法三:在, 项目管理器, 里选择, 文档, →, 报表, →, 新建, 。
只要使用上述三种方法之一, 都可在屏幕上打开一个, 报表设计器,, 同时系
统菜单添加了一个, 报表, 菜单 。 默认情况下还同时打开, 报表设计器, 和, 报
表控件, 工具栏, 如图 11-2所示 。
此时创建的报表是一个空白报表。如果用户对设计报表的步骤已经很熟悉,就
可立即在空白报表上着手设计符合自己需要的报表了。
图 11-2 报表设计器
11.2.2 创建快速报表
,快速报表, 是创建报表布局最为快速的方法, 用户只需要在其中选择基本的
报表组件, Visual FoxPro就会根据所选择的布局自动创建简单的报表布局, 但生
成的布局偏于简单 。 一般可以利用快速报表创建简单布局, 再用报表设计器进行
修改和完善, 以得到较满意的报表布局 。 这样可以大大提高报表设计效率 。
创建一个快速报表的操作步骤如下,
① 在, 文件, 菜单中选择, 新建, 。
② 在, 新建, 窗口中选择, 报表,, 单击新建文件按钮, 打开, 报表设计器,
窗口 。
③ 在, 报表, 菜单中选择, 快速报表, 选项, 如果没有打开的数据源 ( 表 ),
系统将弹出, 打开, 对话框, 从中选定要使用的表 。 本例中, 选定, 学生, 表,
然后单击确定按钮, 出现如图 11-3所示的, 快速报表, 对话框 。 在对话框中可以
为报表选择所需要的字段, 字段布局以及标题和别名选项 。 对话框的上方有两个
大按钮, 左边的是按行布局, 右面的是按列布局 。
④ 选择行布局 。 单击确定按钮, 用户在, 快速报表, 中选中的选项反映在, 报
表设计器, 的报表布局中, 如图 11-4所示 。
⑤ 单击鼠标右键, 在快捷菜单中选择, 预览,, 在, 预览, 窗口中可以看到快
速报表的结果, 如图 11-5所示 。
⑥ 选择, 文件, 菜单下的, 保存, 选项, 保存报表, 其文件名为, 学生报表
.FRX”。
图 11-4,学生, 表的快速报表布局
图 11-3,快速报表, 对话框
图 11-5 快速报表预览
11.2.3 用报表向导创建报表
使用前面介绍的, 快速报表, 的方法可以在, 报表生成器, 里快速地生成一个
初具规模的报表 。 Visual FoxPro还提供了一个, 报表向导, 的功能, 使用户能
够在系统的简单提示下创建一个报表 。
l 菜单方式 1:, 文件, 菜单 →, 新建, →, 报表向导, 。
l 菜单方式 2:, 工具, 菜单 →, 向导, →, 报表, 。
即可使用报表向导,, 向导选取, 的屏幕显示对话框如图 11-6所示 。
对话框中的, 报表向导, 是使用一个表创建一个带格式的报表;, 一对多报表
向导, 则是创建一个包含父表和子表记录内容的报表 。 在这里选择, 报表向导,
。
选择向导类型后, 单击确定按钮, 系统进入到报表向导的步骤 1。
步骤 1:字段选取。屏幕显示的对话框如图 11-7( a)所示。若当前未打开任何
数据库或表,图 11-7( a)所示的对话框中的, 数据库和表, 列表框显示为, 自
由表, 。此时可单击, 数据库与表, 右边的按钮打开一个, 打开, 对话框,在该
对话框里选择打开一个表文件,系统将在图 11-7( a)所示的, 数据库和表, 列
表框里显示对应的数据库文件及其所包含的表文件。
在, 数据库和表, 列表框中选定表后(如为, 学生, ),此时, 可用字段, 列
表框列出了该表文件所有可用字段,用户可部分或全部选择到右面的, 选定字段
” 列表框中。
步骤 2:分组记录 。 此时暂不进行分组, 单击下一步按钮, 直接进入下一步操
作 。
步骤 3:选择报表样式 。 在报表向导的第 3步做的工作主要是设计报表的外观
。 一共有五种样式供选择:经营式, 账务式, 简报式, 带区式和随意式 。 报表
的方向也分为两类:纵向与横向 。 选择样式时, 对话框的左上图将显示样式的
最终结果 。 选择方向时也有类似的效果 。 如图 11-7( b) 所示 。
步骤 4:定义报表布局 。 定义报表布局就是设置打印页面是按行布局, 还是按
列布局, 并可定义行数和列数, 还可以选择打印方向:, 横向, 或, 纵向,,
如图 11-7( c) 所示 。 此处按默认设置进入下一步 。
步骤 5:排序记录 。 在报表向导步骤 4所要做的工作是在表里选定排序的索引
字段 。 通用型或备注型字段不能作为排序字段 。 例如, 选定, 学号, 字段作为
排序字段, 再选, 升序, 单选钮, 生成的报表按照学号升序顺序输出记录的内
容, 如图 11-7( d) 所示 。
步骤 6:完成 。 选定排序字段后, 单击下一步按钮, 系统进入到报表向导的步
骤 6“完成,, 如图 11-7(e)所示 。 在这里, 用户可以定义报表的标题, 预览报表
并可选择一些其他选项 。 例如, 有些字段内容太长, 可选择对话框的, 对不能
容纳的字段进行折行处理, 复选框, 让系统对长行数据进行折行处理 。
可用预览 (P)按钮查看报表向导的设计结果,如图 11-8所示。
至此,,报表向导, 完成了所有的工作,并生成了一个报表。
图 11-6,向导选取, 对话框 图 11-7( a) 报表向导步骤 1-字段选取
图 11-7( b) 报表向导步骤 3-选择报表样式 图 11-7( c) 报表向导步骤 4-定义报表布局
图 11-7( d) 报表向导步骤 5-排序记录 图 11-7(e) 报表向导步骤 6-完成
图 11-8 报表预览
11.3 报表设计器
11.3.1 报表设计器的基本环境
用报表向导和快速报表创建报表文件, 可以简单和快速地完成设计, 但
不能满足内容和样式丰富的报表的需要 。 因此, 用报表向导和快速报表设计
的报表, 还需使用报表设计器进行再设计, 当然也可以用报表设计器从空白
报表开始从头设计一个新报表 。
修改一个已经存在的报表, 首先应在报表设计器中打开它, 常用的打开
方法有,
方法一,MODIFY REPORT [<报表文件名 >]
方法二:, 文件, 菜单 →, 打开, 。
或单击工具栏上的打开按钮, 在打开对话框中选择要打开的报表文件,
然后单击确定按钮 。
1,报表带区与报表布局
在报表设计器中,报表被划分成若干不同类型的带区,默认情况下,“
报表设计器, 显示三个带区:页标头、细节和页注脚。可以在, 报表, 菜单
中选择增加标题、总结,组标头、组注脚带区。
“报表设计器, 的带区中可以插入各种控件, 它们包含打印的报表中所需
的标签, 字段, 变量和表达式 。 若要增强报表的视觉效果和可读性, 还可以
添加直线, 矩形以及圆角矩形等控件, 也可以包含图片 /OLE绑定型控件 。 每
一带区底部的灰色条称为分隔符栏 。 带区名称显示于靠近蓝箭头的栏中, 此
箭头指示该带区位于栏之上 。 如图 11-9所示 。
在表 11-2中列出了各类带区的名称, 功能以及使用时输出的情况, 表中各
带区名称排列的顺序和报表设计器的带区的排列顺序一致 。 页标头, 细节,
页注脚三个带区是报表设计器的默认布局;标题, 总结, 组标头, 组注脚带
区是用, 报表, 菜单的下拉菜单产生的;表中的列标头, 列注脚带区是用,
文件, 菜单中的, 页面设置, 命令设置的 。 当打印页面列数大于 1,就会在
报表设计器中增加这两个带区 。
2,调整带区大小
在, 报表设计器, 中, 可以修改每个带区的大小和特征, 其方法是:用鼠
标左键按住相应的分隔符栏, 将带区栏拖动到适当高度 。
注意:不能使带区高度小于布局中控件的高度 。 可以先增加带区高度, 把
控件移进带区内后, 再减小带区高度 。
3,标尺
报表设计器中最上面和最左面设有标尺,可以在带区中精确地定位对象
的垂直和水平位置。将标尺和, 显示, 菜单的, 显示位置, 命令一起使
用可以帮助定位对象。标尺刻度默认度量单位是英寸或厘米。若要将标
尺刻度更改为像素,可以从, 格式, 菜单中选择, 设置网格刻度, 进行
更改。
图 11-9 报表带区
图 11-10 报表数据环境设置 图 11-11 报表控件工具栏
11.3.2 设置报表的数据环境
报表是依赖于数据源提供数据的, 若要控制报表的数据源, 可以定义一个与
报表一起存储的数据环境, 或者每次运行报表时在代码中激活指定的数据源 。
可用下面的方法打开报表的数据环境设计器窗口 。
l 右键单击报表带区空白处, 在快捷菜单中单击, 数据环境, 命令 。
l 单击, 显示, 菜单中的, 数据环境, 命令 。
l 在报表设计器图标工具栏中单击数据环境按钮 。
用鼠标右键单击数据环境设计器的窗口区域, 在弹出的快捷菜单中单击, 添
加, 命令, 弹出, 打开, 对话框, 可选择和添加表文件, 视图等到数据环境中
。
若需要对表设置索引,首先应该在该表添加到数据环境设计器之前,在表设
计器中为表建立索引,然后在数据环境设计器之外进行设置(如, SET ORDER
TO <索引标识 >”命令或数据工作期中指定),或者在数据环境设计器中设置。
操作步骤如下,
① 在数据环境设计器中右击该表, 选择, 属性, 单击 。
②在, 属性, 窗口的, 数据, 卡片中选定, Order”属性,在索引列表中选定
一个索引即可。如图 11-10所示。
11.3.3 报表控件
1., 报表控件, 工具栏
可以使用, 报表控件, 工具栏在报表上创建控件 。 当打开, 报表设计器, 时, 自动
显示此工具栏, 如图 11-11所示 。 然后单击需要的控件按钮, 把鼠标指针移到报表上,
然后左键拖动到适当大小来放置控件 。
以下是报表控件的名称和功能,
标签 ——“报表控件, 工具栏中的字母, A”图标, 在报表带区中添加文本标签 。
域控件 ——用字母, ab|”表示的图标, 用来输出报表中的各种类型的数据 。
线条 ——用两条交叉线表示的图标, 画报表中的线段 。
矩形 ——矩形框表示的图标, 在报表中画矩形框和报表的边界 。
圆角矩形 ——形状是圆角矩形的图标, 可在报表中画圆, 椭圆, 圆角矩形等 。
图片 /ActiveX绑定控件 ——以, OLE”标识的图标, 在报表中添加位图或者通用字段
。
如果用户在报表上设置了控件,可以双击报表上的此控件,然后即可在显示的对话
框中设置和修改其属性。
2,添加标签控件
标签控件在报表中使用是相当广泛的 。 例如, 每一个字段前都加上一段
说明性文字, 报表一般都有标题等, 这些说明性文字或标题文本就是使用
标签控件来完成的 。
若要往报表里添加标签控件, 在, 报表控件, 工具栏上选中 A按钮, 然后
在报表里指定的位置上单击鼠标, 此时鼠标将变为一个竖条, 表示可在当
前位置上输入文本 。 用户可以在文本编辑区内随意进行编辑, 例如使用回
车键添加行, 或使用, 编辑, 菜单剪切, 复制和粘贴文本 。
在激活标签控件后, 可用, 格式, 菜单下的, 字体, 命令设置标签字符
的字体, 字形, 大小和颜色 。
3,添加域控件
在报表中可以使用域控件显示一些表达式, 如表或视图的字段, 内存变
量及其之间的运算值等, 这是域控件的独特功能 。 可以使用如下方法添加
域控件 。
( 1) 添加字段
l 从数据环境中添加字段 。 启动报表设计器, 打开报表, 在, 数据环境
设计器, 中将选定字段拖到报表设计器的相应带区 ( 细节带区 ) 放开, 这样
字段就被拖放到了布局上, 再适当调整细节带区高度, 结果如图 11-12所示
。
l 从工具栏添加表字段 。
操作步骤如下,
① 单击, 报表控件, 工具栏中的域控件按钮 。
② 在, 报表设计器, 的相应带区拖出一个矩形框 。
③ 在弹出的, 报表表达式, 对话框中 ( 如图 11-13所示 ), 选择, 表达式
” 框后面的对话按钮, 弹出, 表达式生成器, 对话框 。
④在, 表达式生成器, 对话框左下方的, 字段 (F):”列表框中,双击字段
名,将自动把该字段添加到上面的, 报表字段的表达式, 文本框中。如图
11-14所示。如果, 字段, 框为空,则应该向数据环境添加表或视图。
⑤ 单击确定按钮 。
⑥在, 报表表达式, 对话框中,单击确定按钮。
( 2) 输出系统变量
在域控件中可使用系统变量, 在报表运行时获得一些统计信息 。 例如, 在每页
的, 页注脚, 带区输出页码, 使用的就是系统变量, _pageno”。 其设计步骤和表
的字段一样, 在, 页注脚, 带区合适的位置加入一个域控件后, 可在, 报表表达
式, 对话框的, 表达式, 文本框中逐个输入系统变量的字符, 也可打开, 表达式
生成器, 对话框, 在对话框的右下方, 变量 (R):”列表框中选择, _pageno”选项
。
( 3) 输出函数和表达式
如果要在一个域控件中输出几个字段运算的结果, 需要使用函数和表达式 。 例
如, 在, 学生,DBF”表文件中有数学, 物理, 英语三个数值型字段, 但没有总分
字段 。 若要在报表输出每个人三门功课的总成绩, 可在, 页标头, 带区的相应位
置设计一个, 总分, 标签, 在紧挨着, 总分, 标签的下方的, 细节, 带区设计一
个域控件;在这个域控件的, 表达式生成器, 对话框中, 双击, 字段 (F):”列表
框中的, 学生,数学,, 输入, +”号;再对, 学生,物理, 和, 学生,英语, 重复
这样的操作, 最后使对话框的, 报表字段的表达式, 显示为,
学生,数学 +学生,物理 +学生,英语
设计完成后,在报表预览时,可看到每个同学三门课程的总分
图 11-12 向报表中添加字段 图 11-13,域控件, 的, 报表表达式, 对话框
图 11-14 表达式生成器 图 11-15,域控件, 字符数据的格式
4,域控件的编辑
域控件的编辑有以下内容,
( 1) 域控件的剪切, 复制与删除 。 添加的域控件可用鼠标单击激活, 可以
按, Del”键删除;鼠标右键单击域控件, 在它的弹出菜单中执行剪切, 复制,
粘贴命令 。 带区中所有控件都可以用上面同样的方法来进行剪切, 复制, 删除
操作 。
( 2) 域控件表达式修改 。 在已经设计了表达式的域控件之后, 可用鼠标双
击再次打开它的, 报表表达式, 对话框, 重新设置它的表达式 。
( 3) 域控件的格式设计 。 域控件的格式设计主要包括以下内容,
① 溢出时伸展 。 在, 报表表达式, 对话框中还有一个复选框, 溢出时伸展,
。 若选择了它, 当字段值的宽度超过了域控件的设计宽度, 报表运行时会自动
增加一行来输出 。 否则, 会截去超出的字符 。
② 域控件的格式对话框 。 在, 报表表达式, 对话框中, 单击, 格式, 右边的
… 按钮, 会出现一个关于该域控件的格式设计界面, 如图 11-15所示 。 对不同
类型的字段, 有不同格式的设计内容, 图 11-15示例的是数值型字段输出格式
,可设计数值数据的左对齐, 负数加括号等格式 。
在, 格式 (F):”的文本框中是输出掩码, 本例中, 若输出数据是 85.00,则根据
格式符, ***,***.**”,报表的实际输出是, ***,*85.00”。
③域控件数据的字体、字号设计。激活域控件后,用, 格式, 菜单下的, 字体
” 命令设计域控件中数据的字体、字形、大小和颜色。, 格式, 菜单中还有其
他的格式设计命令,如对齐、水平间距和垂直间距等。
5,线条, 矩形, 圆角矩形控件设计
要使报表打印输出时具有表格的外观, 可用线条, 矩形, 圆角矩形等来进行装
饰 。
(1) 添加控件
用鼠标单击, 报表控件, 工具栏中的, 线条, ( 矩形, 圆角矩形 ) 控件, 然后
在带区相应的位置进行拖动, 即可生成相应图形 。
( 2) 调整
若该控件的形状, 大小不合适, 可以进行下列调整,
① 调整大小 。 用鼠标左键拖动其边缘, 可调整大小, Shift+键盘方向键可以
微调 。
② 调整线条粗细及样式 。 选中控件, 从, 格式, 菜单中的, 绘图笔, 子菜单中
选择相应线条粗细及样式 。
③ 调整填充样式 。 选中控件, 从, 格式, 菜单中的, 填充, 子菜单中选择相应
填充样式 。
④双击该控件,弹出相应对话框,可以进行详细设置。
6,添加 OLE对象
( 1) 在, 报表控件, 工具栏中单击图片 /ActiveX绑定控件按钮 。
( 2) 在, 报表设计器, 中的相应带区拖放出一个矩形框 。
( 3)在弹出的, 报表图片, 对话框中,选择, 图片来源, 区域的, 字段
”,插入一个通用型字段;若选择, 图片来源, 区域的, 文件,,则可以插入
不变的 OLE图片对象。
11.3.4 报表控件的调整与控制
1,调整控件大小
对于创建的报表布局上已经存在的控件, 可以更改它们在报表上的位置和尺
寸 。
( 1) 移动一个控件 。 选择控件, 在控件四周会出现多个控点, 按住这个
控件并把它拖动到, 报表, 带区中新的位置上 。
( 2) 选择多个控件 。 用鼠标左键在控件周围拖动, 画出选择框, 这时选
择控点将显示在每个控件周围 。 当它们被选中后, 可以作为一组内容来移动,
复制或删除 。 若要移动, 复制或删除的控件不相邻, 在选择第二个及以后的控
件时按住 Shift键即可 。
( 3) 将控件组合在一起 。 选择想作为一组处理的多个控件, 从, 格式,
菜单中选择, 分组,, 这时选择控点将移到整个组之外 。 可以把该组控件作为
一个单元处理 。
( 4) 对一组控件取消组定义 。 选择一组控件, 从, 格式, 菜单中选择, 取消组
” 命令, 这时选定的控点将显示在组内每一控件周围 。
( 5)调整控件的大小。选择要调整的控件,这时在该控件四周出现控点,然后
拖动选定的控点直到所需的大小。
( 6) 匹配多个控件的大小 。 选择想使其具有同样大小的一些控件 。 从, 格式, 菜单
中选择, 大小,, 选择适当选项来匹配宽度, 高度或大小, 控件将按照需要进行调
整 。
2,复制和删除报表控件
与 Windows中文件或文件夹的操作类似:先选定,然后使用编辑菜单或右键快捷菜单
进行复制;在新位置使用编辑菜单或右键快捷菜单粘贴。
3,对齐控件
选择要对齐的控件,从, 格式, 菜单中选择, 对齐,,再从子菜单中选择适当对齐
选项,如, 左对齐,,, 垂直居中对齐, 或, 水平居中对齐, 等。 Visual FoxPro使
用与所选对齐方向最近的控件作为固定参照控件,完成所选控件的对齐。也可以使
用, 布局工具栏, 完成控件的对齐。
4,调整控件的位置
使用状态条或网格将控件放置在报表页面上的特定位置 。 默认情况下
,控件根据网格对齐其位置 。 可以选择关掉对齐功能, 显示或隐藏网格
线 。 网格线可以帮助用户按所需布局放置控件 。
( 1) 将控件放置在特定的位置 。 从, 显示, 菜单中选择, 显示位
置,, 选择一个控件, 然后使用状态栏上的位置信息将该控件移动到特
定位置 。
( 2) 人工对齐控件 。 从, 格式, 菜单中清除, 对齐格线, 。
( 3) 显示网格线 。 从, 显示, 菜单中选择, 网格线,, 网格将在
报表带区中显示 ( 在输出的报表内不显示 ) 。
( 4) 更改网格的度量单位 。 从, 格式, 菜单中选择, 设置网格刻
度, 。
11.4 报表打印输出
11.4.1 页面设置
设计报表时还要考虑页面外观, 如页边距, 纸张类型, 布局等, 这些设置都可
以在, 文件, 菜单下面的, 页面设置, 中进行 。
打开, 页面设置, 对话框, 如图 11-16所示 。 在该对话框中可对报表的打印页
面进行布局 。
( 1) 分栏 。 在, 页面设置, 对话框中, 系统默认报表页面的列数是 1,表
示报表输出记录不分栏 。 若设置列数大于 1,则记录分栏输出, 此时, 左边的打
印顺序按钮可以设置记录输出的顺序 。 以本图中分栏数等于 2为例, 若选择左边
的大按钮, 则记录在第一栏输完后再在第二栏输出;若选择打印顺序右边按钮,
记录的输出方式是第一栏输出 1,3,5…… 条记录, 第二栏输出 2,4,6…… 条记
录
( 2) 左页边距 。 改变, 左页边距, 的值, 页面布局将按新的页边距设置 。
( 3) 纸张的大小与布局方向 。 在图 11-16中, 单击打印设置按钮, 出现如
图 11-17所示的, 打印设置, 对话框, 在此可以更改纸张大小和纸张的方向 。
11.4.2 预览结果
通过预览报表, 不用打印就能看到它的页面外观 。
操作步骤如下,
① 从快捷菜单或, 显示, 菜单选择, 预览,, 出现, 打印预览, 工具栏 。 如图 11-18
所示 。
② 在, 打印预览, 工具栏中选择, 上一页, 或, 前一页, 来切换页面 。
③若要更改报表图像的大小,选择, 缩放, 列表。
④ 若要打印报表, 选择打印报表按钮 。
⑤ 若要返回到设计状态, 选择关闭预览按钮 。
11.4.3 打印报表
使用, 报表设计器, 创建报表布局文件, 目的是把要打印的数据组织成令人满意的格
式 。 它按数据源中记录出现的顺序处理记录 。 在打印一个报表文件之前, 应确认数据源
中已对数据进行了正确的排序 。
打印报表的操作步骤如下,
① 从快捷菜单或, 文件, 菜单中选择, 打印, 命令, 打开, 打印, 窗口, 如图 11-19
所示 。
② 设置合适的打印机, 打印范围和打印份数等项目 。
③ 单击确定按钮, Visual FoxPro就会把报表发送到打印机上 。
也可以在命令窗口中使用命令来打印报表, 其格式如下,
REPORT FORM <报表格式文件名 >
[PREVIEW] && 预览
[To PRINTER] && 输出到打印机
图 11-16,页面设置, 对话框 图 11-17 页面设置中, 打印设置, 对话框
图 11-18 打印预览工具栏
缩放控制
第一页
前一页
选择页码页
下一页
最后一页
返回设计模式
打印
图 11-19,打印, 对话框
11.5 报表设计示例
下面以打印学生选课成绩表为例, 说明报表设计的基本方法 。
在, 学籍管理, 数据库中, 有学生, 选课, 课程三张表,
学生 (学号 C(8),姓名 C(8),性别 C(2),出生年月 D,入校总分 N(3),三好生
L)
选课 (学号 C(8),课程号 C(4),成绩 N(3))
课程 (课程号 C(4),课程名 C(10),学时 C(3))
学生表索引:学号 ( 主索引 )
选课表索引:学号 ( 普通索引 ), 课程号 ( 普通索引 )
课程表索引:课程号 ( 主索引 )
现要求设计如表 11-3格式的报表 。
1,新建报表
单击工具栏上的新建按钮,在弹出的对话框中选择, 报表, →, 新建文件(
N),,建立一个空白报表,并打开报表设计器。
2,设置报表数据源
① 右键单击报表空白处, 在右键菜单中选择, 数据环境,, 打开, 数据环境
” 设计器 。
②在, 数据环境设计器, 中单击右键,选择, 添加( A… ),,在磁盘上查
找并分别加入三个数据表:学生、选课和课程表。
③ 在数据环境设计器中右击, 学生, 表, 选择, 属性, ;在, 属性, 窗口的
,数据, 卡片中选定, Order”属性, 在索引列表中选定索引, 学号, 。
用同样的方法, 设置, 课程表, 的索引为, 课程号, 。
④ 用鼠标左键拖动, 选课, 表中的, 学号, 字段到, 学生, 表下方的索引列表
中的, 学号, 索引上, 建立选课表与学生表之间的, 学号-学号, 关系;用鼠标
左键拖动, 选课, 表中的, 课程号, 字段到, 课程, 表下方的索引列表中的, 课
程号, 索引上, 建立选课表与课程表之间的, 课程号-课程号, 关系 。 如图 11-20
所示 。
3,向报表中添加数据表字段和页标头
① 用鼠标左键分别将, 选课, 表中的, 学号,,, 学生, 表中的, 姓名,,,
课程, 表中的, 课程名,,, 选课, 表中的, 成绩, 分别拖放到报表的, 细节,
区 。
② 单击报表工具栏中的 A 标签按钮, 再单击报表, 页标头, 区适当位置, 输入
,学号, 。
用同样的方法添加标签, 姓名,,, 课程, 和, 成绩, 。 结果如图 11-21所示 。
4,标题, 页注脚的添加及线条的修饰
① 增加标题带区:单击, 报表, 菜单第一项, 标题 /总结 ( T… ),, 打开, 标
题 /总结, 对话框, 如图 11-22所示 。 在该对话框中选中, 标题带区, 前的复选框
,在报表最上方增加标题带区 。
② 添加标题:在标题带区中间添加标签, 设置字号为, 三号,, 输入, 学生选
课成绩表, 作为报表标题 。
③ 添加制表日期:在标题右下方增加一个标签, 输入, 制表日期,, 在它的后
面, 通过单击报表工具栏中的域控件按钮 ab| 打开, 报表表达式, 对话框 。 在
,表达式, 文本框中用键盘输入 DATE()。
④ 添加页号:在, 页脚注, 带区右下方添加一个文本框, 输入, 页,, 在其后
添加一个域控件 。 在打开的, 表达式生成器, 的, 表达式, 文本框中输入系统变
量, _pageno”。
⑤ 添加水平分隔框:在页标头中, 学号, 等标签的上下, 细节区中, 学号, 等
域控件的上下, 各增加一根水平线条, 其中页标头最上方的应该是一根粗线 。 实
现方法是:选中该线条, 在, 格式, 菜单中, 绘图笔, 的下拉菜单中, 选择, 2磅
” 。
⑥ 添加垂直分隔线:在页标头中, 学号, 等标签的左右, 细节区中, 学号, 等
域控件的左右, 各增加一根垂直线条 。
设计完成后的报表设计器如图 11-23所示 。
5,保存与预览
将设计好的报表取名存盘保存 。 右键单击设计器空白处, 单击预览按钮, 显示
结果如图 11-24所示 。
图 11-20 在数据环境设计器中设置表与表之间关系
图 11-21 添加字段和标签
图 11-22,标题 /总结, 对话框
图 11-23 完成设计的报表设计器画面
图 11-24 报表预览屏幕显示结果
思考题
1,报表在应用程序中的主要作用是什么?
2,在 Visual FoxPro中有几种创建报表的方式?
3,报表的设计工具和设计步骤有哪些?
4,报表布局的原则有哪些?建立报表布局有几种方法?各类报表布
局应用的典型范围是什么?
5., 报表设计器, 中的带区有哪几类?并说明它们在每一页出现的
打印范围和频率 。
6., 报表, 中可以使用的控件有哪些? 怎样添加控件?
7,什么是, 数据环境,, 它起到了什么作用?什么是, 数据源,, 它
起到了什么作用?
8,试比较表单的, 数据环境, 和报表的, 数据环境, 的异同 。
9,域控件可以输出几种数据?
10,通过什么手段可以精确调整控件位置?
11.1 报表设计基础
11.2 创建简单报表
11.3 报表设计器
11.4 报表打印输出
11.5 报表设计示例
在 Visual FoxPro中, 报表是输出数据库中的数据最常用的输出形式 。 在开发应用
系统时, 需要输出大量报表 。 借助于报表设计器, 可以所见即所得地完成报表的
设计 。 设计报表通常包括数据源和布局两部分内容 。 设计报表就是根据报表的数
据源来设计报表的布局 。
11.1 报表设计基础
11.1.1 报表的常规布局
创建报表之前, 首先应确定报表的基本布局 。 报表由表格组成, 表格种类繁多,
如图 11-1所示 。 表 11-1给出了报表的常规布局说明 。
11.1.2 报表设计的步骤
报表包括两个基本组成部分:数据源和布局 。 数据源通常是数据库中的表, 也可
以是视图, 查询或临时表 。 报表布局定义了报表的打印格式 。 只要定义了 —个表
,一个视图或查询后, 便可以创建报表 。
在 Visual FoxPro中, 报表设计通常包括如下四个步骤,
① 决定要创建的报表类型 。
② 创建报表布局文件 。
③ 修改和定制布局文件 。
④ 预览和打印报表 。
图 11-1 报表的几种常规布局
列报表 行报表 一对多报表 多栏报表
1.1.3 创建报表布局文件
报表布局文件用于存储报表的详细说明, 记录了报表中的数据
源, 各元素在页面上的位置等信息 。 报表布局文件的扩展名是
.FRX。
Visual FoxPro提供了三种方法来创建报表的布局,
l 用报表向导创建简单的单表或多表报表 。
l 用, 快速报表, 从单表中创建一个简单报表 。
l 用, 报表设计器, 修改已有的报表或创建空白的报表 。
以上方法所创建的报表布局文件都可以用, 报表设计器, 进行
修改 。, 报表向导, 是创建报表的最简单途径, 它自动提供很多
,报表设计器, 的定制功能 。, 快速报表, 是创建简单布局的最
快速的方法 。 如果直接在, 报表设计器, 内创建报表,, 报表设
计器, 将提供一个空白布局 。
11.2 创建简单报表
11.2.1 创建空白报表
创建报表的方法有以下三种,
l 方法一:, 文件, 菜单 →, 新建, →, 报表, →, 新建文件, 。
l 方法二,CREATE REPORT [<报表文件名 > [.FRX ]]
【 功能 】 创建报表文件 。
【 说明 】 若省略 <报表文件名 >,则 Visual FoxPro以, 报表 1.FRX”为默认文件
名 。
l 方法三:在, 项目管理器, 里选择, 文档, →, 报表, →, 新建, 。
只要使用上述三种方法之一, 都可在屏幕上打开一个, 报表设计器,, 同时系
统菜单添加了一个, 报表, 菜单 。 默认情况下还同时打开, 报表设计器, 和, 报
表控件, 工具栏, 如图 11-2所示 。
此时创建的报表是一个空白报表。如果用户对设计报表的步骤已经很熟悉,就
可立即在空白报表上着手设计符合自己需要的报表了。
图 11-2 报表设计器
11.2.2 创建快速报表
,快速报表, 是创建报表布局最为快速的方法, 用户只需要在其中选择基本的
报表组件, Visual FoxPro就会根据所选择的布局自动创建简单的报表布局, 但生
成的布局偏于简单 。 一般可以利用快速报表创建简单布局, 再用报表设计器进行
修改和完善, 以得到较满意的报表布局 。 这样可以大大提高报表设计效率 。
创建一个快速报表的操作步骤如下,
① 在, 文件, 菜单中选择, 新建, 。
② 在, 新建, 窗口中选择, 报表,, 单击新建文件按钮, 打开, 报表设计器,
窗口 。
③ 在, 报表, 菜单中选择, 快速报表, 选项, 如果没有打开的数据源 ( 表 ),
系统将弹出, 打开, 对话框, 从中选定要使用的表 。 本例中, 选定, 学生, 表,
然后单击确定按钮, 出现如图 11-3所示的, 快速报表, 对话框 。 在对话框中可以
为报表选择所需要的字段, 字段布局以及标题和别名选项 。 对话框的上方有两个
大按钮, 左边的是按行布局, 右面的是按列布局 。
④ 选择行布局 。 单击确定按钮, 用户在, 快速报表, 中选中的选项反映在, 报
表设计器, 的报表布局中, 如图 11-4所示 。
⑤ 单击鼠标右键, 在快捷菜单中选择, 预览,, 在, 预览, 窗口中可以看到快
速报表的结果, 如图 11-5所示 。
⑥ 选择, 文件, 菜单下的, 保存, 选项, 保存报表, 其文件名为, 学生报表
.FRX”。
图 11-4,学生, 表的快速报表布局
图 11-3,快速报表, 对话框
图 11-5 快速报表预览
11.2.3 用报表向导创建报表
使用前面介绍的, 快速报表, 的方法可以在, 报表生成器, 里快速地生成一个
初具规模的报表 。 Visual FoxPro还提供了一个, 报表向导, 的功能, 使用户能
够在系统的简单提示下创建一个报表 。
l 菜单方式 1:, 文件, 菜单 →, 新建, →, 报表向导, 。
l 菜单方式 2:, 工具, 菜单 →, 向导, →, 报表, 。
即可使用报表向导,, 向导选取, 的屏幕显示对话框如图 11-6所示 。
对话框中的, 报表向导, 是使用一个表创建一个带格式的报表;, 一对多报表
向导, 则是创建一个包含父表和子表记录内容的报表 。 在这里选择, 报表向导,
。
选择向导类型后, 单击确定按钮, 系统进入到报表向导的步骤 1。
步骤 1:字段选取。屏幕显示的对话框如图 11-7( a)所示。若当前未打开任何
数据库或表,图 11-7( a)所示的对话框中的, 数据库和表, 列表框显示为, 自
由表, 。此时可单击, 数据库与表, 右边的按钮打开一个, 打开, 对话框,在该
对话框里选择打开一个表文件,系统将在图 11-7( a)所示的, 数据库和表, 列
表框里显示对应的数据库文件及其所包含的表文件。
在, 数据库和表, 列表框中选定表后(如为, 学生, ),此时, 可用字段, 列
表框列出了该表文件所有可用字段,用户可部分或全部选择到右面的, 选定字段
” 列表框中。
步骤 2:分组记录 。 此时暂不进行分组, 单击下一步按钮, 直接进入下一步操
作 。
步骤 3:选择报表样式 。 在报表向导的第 3步做的工作主要是设计报表的外观
。 一共有五种样式供选择:经营式, 账务式, 简报式, 带区式和随意式 。 报表
的方向也分为两类:纵向与横向 。 选择样式时, 对话框的左上图将显示样式的
最终结果 。 选择方向时也有类似的效果 。 如图 11-7( b) 所示 。
步骤 4:定义报表布局 。 定义报表布局就是设置打印页面是按行布局, 还是按
列布局, 并可定义行数和列数, 还可以选择打印方向:, 横向, 或, 纵向,,
如图 11-7( c) 所示 。 此处按默认设置进入下一步 。
步骤 5:排序记录 。 在报表向导步骤 4所要做的工作是在表里选定排序的索引
字段 。 通用型或备注型字段不能作为排序字段 。 例如, 选定, 学号, 字段作为
排序字段, 再选, 升序, 单选钮, 生成的报表按照学号升序顺序输出记录的内
容, 如图 11-7( d) 所示 。
步骤 6:完成 。 选定排序字段后, 单击下一步按钮, 系统进入到报表向导的步
骤 6“完成,, 如图 11-7(e)所示 。 在这里, 用户可以定义报表的标题, 预览报表
并可选择一些其他选项 。 例如, 有些字段内容太长, 可选择对话框的, 对不能
容纳的字段进行折行处理, 复选框, 让系统对长行数据进行折行处理 。
可用预览 (P)按钮查看报表向导的设计结果,如图 11-8所示。
至此,,报表向导, 完成了所有的工作,并生成了一个报表。
图 11-6,向导选取, 对话框 图 11-7( a) 报表向导步骤 1-字段选取
图 11-7( b) 报表向导步骤 3-选择报表样式 图 11-7( c) 报表向导步骤 4-定义报表布局
图 11-7( d) 报表向导步骤 5-排序记录 图 11-7(e) 报表向导步骤 6-完成
图 11-8 报表预览
11.3 报表设计器
11.3.1 报表设计器的基本环境
用报表向导和快速报表创建报表文件, 可以简单和快速地完成设计, 但
不能满足内容和样式丰富的报表的需要 。 因此, 用报表向导和快速报表设计
的报表, 还需使用报表设计器进行再设计, 当然也可以用报表设计器从空白
报表开始从头设计一个新报表 。
修改一个已经存在的报表, 首先应在报表设计器中打开它, 常用的打开
方法有,
方法一,MODIFY REPORT [<报表文件名 >]
方法二:, 文件, 菜单 →, 打开, 。
或单击工具栏上的打开按钮, 在打开对话框中选择要打开的报表文件,
然后单击确定按钮 。
1,报表带区与报表布局
在报表设计器中,报表被划分成若干不同类型的带区,默认情况下,“
报表设计器, 显示三个带区:页标头、细节和页注脚。可以在, 报表, 菜单
中选择增加标题、总结,组标头、组注脚带区。
“报表设计器, 的带区中可以插入各种控件, 它们包含打印的报表中所需
的标签, 字段, 变量和表达式 。 若要增强报表的视觉效果和可读性, 还可以
添加直线, 矩形以及圆角矩形等控件, 也可以包含图片 /OLE绑定型控件 。 每
一带区底部的灰色条称为分隔符栏 。 带区名称显示于靠近蓝箭头的栏中, 此
箭头指示该带区位于栏之上 。 如图 11-9所示 。
在表 11-2中列出了各类带区的名称, 功能以及使用时输出的情况, 表中各
带区名称排列的顺序和报表设计器的带区的排列顺序一致 。 页标头, 细节,
页注脚三个带区是报表设计器的默认布局;标题, 总结, 组标头, 组注脚带
区是用, 报表, 菜单的下拉菜单产生的;表中的列标头, 列注脚带区是用,
文件, 菜单中的, 页面设置, 命令设置的 。 当打印页面列数大于 1,就会在
报表设计器中增加这两个带区 。
2,调整带区大小
在, 报表设计器, 中, 可以修改每个带区的大小和特征, 其方法是:用鼠
标左键按住相应的分隔符栏, 将带区栏拖动到适当高度 。
注意:不能使带区高度小于布局中控件的高度 。 可以先增加带区高度, 把
控件移进带区内后, 再减小带区高度 。
3,标尺
报表设计器中最上面和最左面设有标尺,可以在带区中精确地定位对象
的垂直和水平位置。将标尺和, 显示, 菜单的, 显示位置, 命令一起使
用可以帮助定位对象。标尺刻度默认度量单位是英寸或厘米。若要将标
尺刻度更改为像素,可以从, 格式, 菜单中选择, 设置网格刻度, 进行
更改。
图 11-9 报表带区
图 11-10 报表数据环境设置 图 11-11 报表控件工具栏
11.3.2 设置报表的数据环境
报表是依赖于数据源提供数据的, 若要控制报表的数据源, 可以定义一个与
报表一起存储的数据环境, 或者每次运行报表时在代码中激活指定的数据源 。
可用下面的方法打开报表的数据环境设计器窗口 。
l 右键单击报表带区空白处, 在快捷菜单中单击, 数据环境, 命令 。
l 单击, 显示, 菜单中的, 数据环境, 命令 。
l 在报表设计器图标工具栏中单击数据环境按钮 。
用鼠标右键单击数据环境设计器的窗口区域, 在弹出的快捷菜单中单击, 添
加, 命令, 弹出, 打开, 对话框, 可选择和添加表文件, 视图等到数据环境中
。
若需要对表设置索引,首先应该在该表添加到数据环境设计器之前,在表设
计器中为表建立索引,然后在数据环境设计器之外进行设置(如, SET ORDER
TO <索引标识 >”命令或数据工作期中指定),或者在数据环境设计器中设置。
操作步骤如下,
① 在数据环境设计器中右击该表, 选择, 属性, 单击 。
②在, 属性, 窗口的, 数据, 卡片中选定, Order”属性,在索引列表中选定
一个索引即可。如图 11-10所示。
11.3.3 报表控件
1., 报表控件, 工具栏
可以使用, 报表控件, 工具栏在报表上创建控件 。 当打开, 报表设计器, 时, 自动
显示此工具栏, 如图 11-11所示 。 然后单击需要的控件按钮, 把鼠标指针移到报表上,
然后左键拖动到适当大小来放置控件 。
以下是报表控件的名称和功能,
标签 ——“报表控件, 工具栏中的字母, A”图标, 在报表带区中添加文本标签 。
域控件 ——用字母, ab|”表示的图标, 用来输出报表中的各种类型的数据 。
线条 ——用两条交叉线表示的图标, 画报表中的线段 。
矩形 ——矩形框表示的图标, 在报表中画矩形框和报表的边界 。
圆角矩形 ——形状是圆角矩形的图标, 可在报表中画圆, 椭圆, 圆角矩形等 。
图片 /ActiveX绑定控件 ——以, OLE”标识的图标, 在报表中添加位图或者通用字段
。
如果用户在报表上设置了控件,可以双击报表上的此控件,然后即可在显示的对话
框中设置和修改其属性。
2,添加标签控件
标签控件在报表中使用是相当广泛的 。 例如, 每一个字段前都加上一段
说明性文字, 报表一般都有标题等, 这些说明性文字或标题文本就是使用
标签控件来完成的 。
若要往报表里添加标签控件, 在, 报表控件, 工具栏上选中 A按钮, 然后
在报表里指定的位置上单击鼠标, 此时鼠标将变为一个竖条, 表示可在当
前位置上输入文本 。 用户可以在文本编辑区内随意进行编辑, 例如使用回
车键添加行, 或使用, 编辑, 菜单剪切, 复制和粘贴文本 。
在激活标签控件后, 可用, 格式, 菜单下的, 字体, 命令设置标签字符
的字体, 字形, 大小和颜色 。
3,添加域控件
在报表中可以使用域控件显示一些表达式, 如表或视图的字段, 内存变
量及其之间的运算值等, 这是域控件的独特功能 。 可以使用如下方法添加
域控件 。
( 1) 添加字段
l 从数据环境中添加字段 。 启动报表设计器, 打开报表, 在, 数据环境
设计器, 中将选定字段拖到报表设计器的相应带区 ( 细节带区 ) 放开, 这样
字段就被拖放到了布局上, 再适当调整细节带区高度, 结果如图 11-12所示
。
l 从工具栏添加表字段 。
操作步骤如下,
① 单击, 报表控件, 工具栏中的域控件按钮 。
② 在, 报表设计器, 的相应带区拖出一个矩形框 。
③ 在弹出的, 报表表达式, 对话框中 ( 如图 11-13所示 ), 选择, 表达式
” 框后面的对话按钮, 弹出, 表达式生成器, 对话框 。
④在, 表达式生成器, 对话框左下方的, 字段 (F):”列表框中,双击字段
名,将自动把该字段添加到上面的, 报表字段的表达式, 文本框中。如图
11-14所示。如果, 字段, 框为空,则应该向数据环境添加表或视图。
⑤ 单击确定按钮 。
⑥在, 报表表达式, 对话框中,单击确定按钮。
( 2) 输出系统变量
在域控件中可使用系统变量, 在报表运行时获得一些统计信息 。 例如, 在每页
的, 页注脚, 带区输出页码, 使用的就是系统变量, _pageno”。 其设计步骤和表
的字段一样, 在, 页注脚, 带区合适的位置加入一个域控件后, 可在, 报表表达
式, 对话框的, 表达式, 文本框中逐个输入系统变量的字符, 也可打开, 表达式
生成器, 对话框, 在对话框的右下方, 变量 (R):”列表框中选择, _pageno”选项
。
( 3) 输出函数和表达式
如果要在一个域控件中输出几个字段运算的结果, 需要使用函数和表达式 。 例
如, 在, 学生,DBF”表文件中有数学, 物理, 英语三个数值型字段, 但没有总分
字段 。 若要在报表输出每个人三门功课的总成绩, 可在, 页标头, 带区的相应位
置设计一个, 总分, 标签, 在紧挨着, 总分, 标签的下方的, 细节, 带区设计一
个域控件;在这个域控件的, 表达式生成器, 对话框中, 双击, 字段 (F):”列表
框中的, 学生,数学,, 输入, +”号;再对, 学生,物理, 和, 学生,英语, 重复
这样的操作, 最后使对话框的, 报表字段的表达式, 显示为,
学生,数学 +学生,物理 +学生,英语
设计完成后,在报表预览时,可看到每个同学三门课程的总分
图 11-12 向报表中添加字段 图 11-13,域控件, 的, 报表表达式, 对话框
图 11-14 表达式生成器 图 11-15,域控件, 字符数据的格式
4,域控件的编辑
域控件的编辑有以下内容,
( 1) 域控件的剪切, 复制与删除 。 添加的域控件可用鼠标单击激活, 可以
按, Del”键删除;鼠标右键单击域控件, 在它的弹出菜单中执行剪切, 复制,
粘贴命令 。 带区中所有控件都可以用上面同样的方法来进行剪切, 复制, 删除
操作 。
( 2) 域控件表达式修改 。 在已经设计了表达式的域控件之后, 可用鼠标双
击再次打开它的, 报表表达式, 对话框, 重新设置它的表达式 。
( 3) 域控件的格式设计 。 域控件的格式设计主要包括以下内容,
① 溢出时伸展 。 在, 报表表达式, 对话框中还有一个复选框, 溢出时伸展,
。 若选择了它, 当字段值的宽度超过了域控件的设计宽度, 报表运行时会自动
增加一行来输出 。 否则, 会截去超出的字符 。
② 域控件的格式对话框 。 在, 报表表达式, 对话框中, 单击, 格式, 右边的
… 按钮, 会出现一个关于该域控件的格式设计界面, 如图 11-15所示 。 对不同
类型的字段, 有不同格式的设计内容, 图 11-15示例的是数值型字段输出格式
,可设计数值数据的左对齐, 负数加括号等格式 。
在, 格式 (F):”的文本框中是输出掩码, 本例中, 若输出数据是 85.00,则根据
格式符, ***,***.**”,报表的实际输出是, ***,*85.00”。
③域控件数据的字体、字号设计。激活域控件后,用, 格式, 菜单下的, 字体
” 命令设计域控件中数据的字体、字形、大小和颜色。, 格式, 菜单中还有其
他的格式设计命令,如对齐、水平间距和垂直间距等。
5,线条, 矩形, 圆角矩形控件设计
要使报表打印输出时具有表格的外观, 可用线条, 矩形, 圆角矩形等来进行装
饰 。
(1) 添加控件
用鼠标单击, 报表控件, 工具栏中的, 线条, ( 矩形, 圆角矩形 ) 控件, 然后
在带区相应的位置进行拖动, 即可生成相应图形 。
( 2) 调整
若该控件的形状, 大小不合适, 可以进行下列调整,
① 调整大小 。 用鼠标左键拖动其边缘, 可调整大小, Shift+键盘方向键可以
微调 。
② 调整线条粗细及样式 。 选中控件, 从, 格式, 菜单中的, 绘图笔, 子菜单中
选择相应线条粗细及样式 。
③ 调整填充样式 。 选中控件, 从, 格式, 菜单中的, 填充, 子菜单中选择相应
填充样式 。
④双击该控件,弹出相应对话框,可以进行详细设置。
6,添加 OLE对象
( 1) 在, 报表控件, 工具栏中单击图片 /ActiveX绑定控件按钮 。
( 2) 在, 报表设计器, 中的相应带区拖放出一个矩形框 。
( 3)在弹出的, 报表图片, 对话框中,选择, 图片来源, 区域的, 字段
”,插入一个通用型字段;若选择, 图片来源, 区域的, 文件,,则可以插入
不变的 OLE图片对象。
11.3.4 报表控件的调整与控制
1,调整控件大小
对于创建的报表布局上已经存在的控件, 可以更改它们在报表上的位置和尺
寸 。
( 1) 移动一个控件 。 选择控件, 在控件四周会出现多个控点, 按住这个
控件并把它拖动到, 报表, 带区中新的位置上 。
( 2) 选择多个控件 。 用鼠标左键在控件周围拖动, 画出选择框, 这时选
择控点将显示在每个控件周围 。 当它们被选中后, 可以作为一组内容来移动,
复制或删除 。 若要移动, 复制或删除的控件不相邻, 在选择第二个及以后的控
件时按住 Shift键即可 。
( 3) 将控件组合在一起 。 选择想作为一组处理的多个控件, 从, 格式,
菜单中选择, 分组,, 这时选择控点将移到整个组之外 。 可以把该组控件作为
一个单元处理 。
( 4) 对一组控件取消组定义 。 选择一组控件, 从, 格式, 菜单中选择, 取消组
” 命令, 这时选定的控点将显示在组内每一控件周围 。
( 5)调整控件的大小。选择要调整的控件,这时在该控件四周出现控点,然后
拖动选定的控点直到所需的大小。
( 6) 匹配多个控件的大小 。 选择想使其具有同样大小的一些控件 。 从, 格式, 菜单
中选择, 大小,, 选择适当选项来匹配宽度, 高度或大小, 控件将按照需要进行调
整 。
2,复制和删除报表控件
与 Windows中文件或文件夹的操作类似:先选定,然后使用编辑菜单或右键快捷菜单
进行复制;在新位置使用编辑菜单或右键快捷菜单粘贴。
3,对齐控件
选择要对齐的控件,从, 格式, 菜单中选择, 对齐,,再从子菜单中选择适当对齐
选项,如, 左对齐,,, 垂直居中对齐, 或, 水平居中对齐, 等。 Visual FoxPro使
用与所选对齐方向最近的控件作为固定参照控件,完成所选控件的对齐。也可以使
用, 布局工具栏, 完成控件的对齐。
4,调整控件的位置
使用状态条或网格将控件放置在报表页面上的特定位置 。 默认情况下
,控件根据网格对齐其位置 。 可以选择关掉对齐功能, 显示或隐藏网格
线 。 网格线可以帮助用户按所需布局放置控件 。
( 1) 将控件放置在特定的位置 。 从, 显示, 菜单中选择, 显示位
置,, 选择一个控件, 然后使用状态栏上的位置信息将该控件移动到特
定位置 。
( 2) 人工对齐控件 。 从, 格式, 菜单中清除, 对齐格线, 。
( 3) 显示网格线 。 从, 显示, 菜单中选择, 网格线,, 网格将在
报表带区中显示 ( 在输出的报表内不显示 ) 。
( 4) 更改网格的度量单位 。 从, 格式, 菜单中选择, 设置网格刻
度, 。
11.4 报表打印输出
11.4.1 页面设置
设计报表时还要考虑页面外观, 如页边距, 纸张类型, 布局等, 这些设置都可
以在, 文件, 菜单下面的, 页面设置, 中进行 。
打开, 页面设置, 对话框, 如图 11-16所示 。 在该对话框中可对报表的打印页
面进行布局 。
( 1) 分栏 。 在, 页面设置, 对话框中, 系统默认报表页面的列数是 1,表
示报表输出记录不分栏 。 若设置列数大于 1,则记录分栏输出, 此时, 左边的打
印顺序按钮可以设置记录输出的顺序 。 以本图中分栏数等于 2为例, 若选择左边
的大按钮, 则记录在第一栏输完后再在第二栏输出;若选择打印顺序右边按钮,
记录的输出方式是第一栏输出 1,3,5…… 条记录, 第二栏输出 2,4,6…… 条记
录
( 2) 左页边距 。 改变, 左页边距, 的值, 页面布局将按新的页边距设置 。
( 3) 纸张的大小与布局方向 。 在图 11-16中, 单击打印设置按钮, 出现如
图 11-17所示的, 打印设置, 对话框, 在此可以更改纸张大小和纸张的方向 。
11.4.2 预览结果
通过预览报表, 不用打印就能看到它的页面外观 。
操作步骤如下,
① 从快捷菜单或, 显示, 菜单选择, 预览,, 出现, 打印预览, 工具栏 。 如图 11-18
所示 。
② 在, 打印预览, 工具栏中选择, 上一页, 或, 前一页, 来切换页面 。
③若要更改报表图像的大小,选择, 缩放, 列表。
④ 若要打印报表, 选择打印报表按钮 。
⑤ 若要返回到设计状态, 选择关闭预览按钮 。
11.4.3 打印报表
使用, 报表设计器, 创建报表布局文件, 目的是把要打印的数据组织成令人满意的格
式 。 它按数据源中记录出现的顺序处理记录 。 在打印一个报表文件之前, 应确认数据源
中已对数据进行了正确的排序 。
打印报表的操作步骤如下,
① 从快捷菜单或, 文件, 菜单中选择, 打印, 命令, 打开, 打印, 窗口, 如图 11-19
所示 。
② 设置合适的打印机, 打印范围和打印份数等项目 。
③ 单击确定按钮, Visual FoxPro就会把报表发送到打印机上 。
也可以在命令窗口中使用命令来打印报表, 其格式如下,
REPORT FORM <报表格式文件名 >
[PREVIEW] && 预览
[To PRINTER] && 输出到打印机
图 11-16,页面设置, 对话框 图 11-17 页面设置中, 打印设置, 对话框
图 11-18 打印预览工具栏
缩放控制
第一页
前一页
选择页码页
下一页
最后一页
返回设计模式
打印
图 11-19,打印, 对话框
11.5 报表设计示例
下面以打印学生选课成绩表为例, 说明报表设计的基本方法 。
在, 学籍管理, 数据库中, 有学生, 选课, 课程三张表,
学生 (学号 C(8),姓名 C(8),性别 C(2),出生年月 D,入校总分 N(3),三好生
L)
选课 (学号 C(8),课程号 C(4),成绩 N(3))
课程 (课程号 C(4),课程名 C(10),学时 C(3))
学生表索引:学号 ( 主索引 )
选课表索引:学号 ( 普通索引 ), 课程号 ( 普通索引 )
课程表索引:课程号 ( 主索引 )
现要求设计如表 11-3格式的报表 。
1,新建报表
单击工具栏上的新建按钮,在弹出的对话框中选择, 报表, →, 新建文件(
N),,建立一个空白报表,并打开报表设计器。
2,设置报表数据源
① 右键单击报表空白处, 在右键菜单中选择, 数据环境,, 打开, 数据环境
” 设计器 。
②在, 数据环境设计器, 中单击右键,选择, 添加( A… ),,在磁盘上查
找并分别加入三个数据表:学生、选课和课程表。
③ 在数据环境设计器中右击, 学生, 表, 选择, 属性, ;在, 属性, 窗口的
,数据, 卡片中选定, Order”属性, 在索引列表中选定索引, 学号, 。
用同样的方法, 设置, 课程表, 的索引为, 课程号, 。
④ 用鼠标左键拖动, 选课, 表中的, 学号, 字段到, 学生, 表下方的索引列表
中的, 学号, 索引上, 建立选课表与学生表之间的, 学号-学号, 关系;用鼠标
左键拖动, 选课, 表中的, 课程号, 字段到, 课程, 表下方的索引列表中的, 课
程号, 索引上, 建立选课表与课程表之间的, 课程号-课程号, 关系 。 如图 11-20
所示 。
3,向报表中添加数据表字段和页标头
① 用鼠标左键分别将, 选课, 表中的, 学号,,, 学生, 表中的, 姓名,,,
课程, 表中的, 课程名,,, 选课, 表中的, 成绩, 分别拖放到报表的, 细节,
区 。
② 单击报表工具栏中的 A 标签按钮, 再单击报表, 页标头, 区适当位置, 输入
,学号, 。
用同样的方法添加标签, 姓名,,, 课程, 和, 成绩, 。 结果如图 11-21所示 。
4,标题, 页注脚的添加及线条的修饰
① 增加标题带区:单击, 报表, 菜单第一项, 标题 /总结 ( T… ),, 打开, 标
题 /总结, 对话框, 如图 11-22所示 。 在该对话框中选中, 标题带区, 前的复选框
,在报表最上方增加标题带区 。
② 添加标题:在标题带区中间添加标签, 设置字号为, 三号,, 输入, 学生选
课成绩表, 作为报表标题 。
③ 添加制表日期:在标题右下方增加一个标签, 输入, 制表日期,, 在它的后
面, 通过单击报表工具栏中的域控件按钮 ab| 打开, 报表表达式, 对话框 。 在
,表达式, 文本框中用键盘输入 DATE()。
④ 添加页号:在, 页脚注, 带区右下方添加一个文本框, 输入, 页,, 在其后
添加一个域控件 。 在打开的, 表达式生成器, 的, 表达式, 文本框中输入系统变
量, _pageno”。
⑤ 添加水平分隔框:在页标头中, 学号, 等标签的上下, 细节区中, 学号, 等
域控件的上下, 各增加一根水平线条, 其中页标头最上方的应该是一根粗线 。 实
现方法是:选中该线条, 在, 格式, 菜单中, 绘图笔, 的下拉菜单中, 选择, 2磅
” 。
⑥ 添加垂直分隔线:在页标头中, 学号, 等标签的左右, 细节区中, 学号, 等
域控件的左右, 各增加一根垂直线条 。
设计完成后的报表设计器如图 11-23所示 。
5,保存与预览
将设计好的报表取名存盘保存 。 右键单击设计器空白处, 单击预览按钮, 显示
结果如图 11-24所示 。
图 11-20 在数据环境设计器中设置表与表之间关系
图 11-21 添加字段和标签
图 11-22,标题 /总结, 对话框
图 11-23 完成设计的报表设计器画面
图 11-24 报表预览屏幕显示结果
思考题
1,报表在应用程序中的主要作用是什么?
2,在 Visual FoxPro中有几种创建报表的方式?
3,报表的设计工具和设计步骤有哪些?
4,报表布局的原则有哪些?建立报表布局有几种方法?各类报表布
局应用的典型范围是什么?
5., 报表设计器, 中的带区有哪几类?并说明它们在每一页出现的
打印范围和频率 。
6., 报表, 中可以使用的控件有哪些? 怎样添加控件?
7,什么是, 数据环境,, 它起到了什么作用?什么是, 数据源,, 它
起到了什么作用?
8,试比较表单的, 数据环境, 和报表的, 数据环境, 的异同 。
9,域控件可以输出几种数据?
10,通过什么手段可以精确调整控件位置?