前言:visual foxpro课程介绍a.gongkong.com/tech/class/file/1139.doc  · web...

229
前前 Visual FoxPro 前前前前 主主主主 Visual FoxPro 主主主主 主主主主主主主主主主主 主主主主主主主 前前前前前前前 1 WIN95 前前前前前前前前前前前前2 前前前前前前前前前前前前前前前前前前前 .; 3 前前 .,。 4 .。 (前前前前Visual FoxPro前前前前前 前前前前前前前前前前前)

Upload: others

Post on 27-Dec-2019

47 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

前言:Visual FoxPro 课程介绍主要内容

Visual FoxPro 课程目标课程学时安排和教学方式课程的其它说明

课程达到的目标1.掌握基于 WIN95 以上平台的可视化编程方法;2.熟练掌握关系型数据库的设计和操作方法;3.了解开发数据管理类软件的过程,基本掌握设计软件的方法。

4.通过省计算机基础知识和应用能力二级考试。(自行研读:Visual FoxPro 考试要求,在学习过程中参照该要求)

Page 2: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

课程学时安排和教学方式学时安排: 70 —— 理论课 20 —— 实验课教学方式:

多媒体教学 + 上机操作实验说明:在理论课教学中,按讲展开教学,每一讲有一个主题。课程内容以主题为中心进行展开,尽量铺及大纲中要求的教学内容。在学习过程

中要注意各讲内容的衔接。课程的其它说明课程特点:

1. 概念多、新2. 课程容量大、进度快3. 与已有知识有较大距离,有一定难度

所须基础:Windows 操作系统的基本概念、基本操作熟练掌握一种汉字输入法(五笔字型输入法或其它亦可)计算机的基础知识

学习要点:1. 记笔记,但当听与记矛盾时以听为主;2. 多上机练习,上机操作要有的放矢,及时消化新知识

第一讲 数据库系统及 VFP 概述主要内容

数据库的基本概念Visual FoxPro 运行界面Visual FoxPro 语言特点Visual FoxPro 中的数据

Page 3: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

数据库的基本概念数据

数据是表达信息的一种符号。在 FoxPro 在数据可以是:数值、文字、声音、图像

数据处理由初始数据经计算机快速处理后产生结果数据的过程数据收集→ 转换→组织→ 输入→计算机处理→输出或存储

数据模型“数据的组织结构的描述”信息的三个领域 现实世界:客观存在的事物及相互联系 观念世界(信息世界):现实世界的事物在人们意识中的反映 数据世界(计算机世界):以数据的形式反映观念世界的信息现实世界 信息世界 数据世界 事物及联系 实体模型 数据模型

事物 实体 数据

对象 性质 对象 属性 记录 字段三种常见的数据模型 层次模型 网状模型 关系模型——以二维表的方式组织数据 示例表:学生表

学号 姓名 性别

出生日期 电话号码 班级代号 系代号

照片

01011101 周小波 男 09/28/8

1025-23030443

010111 01

Page 4: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

01011102 黄家鑫 男 03/02/8

00516-58596405

010111 01

02011101 李林 男 02/12/8

30512-58221363

020111 01

02011102 陆海涛 男 04/15/8

20510-63529242

020111 01

02011103 林一平 女 12/20/8

20511-26578493

020111 01

02011104 高明 男 08/17/8

40516-83543808

020111 01

…………

课程代号

课程名 理论学时

实验学时

必修课

学分 课程备注

01 中文 Windows95 40 30 .T. 402 Visual FoxPro 40 50 .T. 603 管理信息系统 12 42 .T. 504 数字电路 14 42 .T. 605 C语言 18 48 .T. 606 网页制作 30 20 .F. 207 英语 50 0 .T. 308 数控技术及应用 14 34 .T. 409 高等数学 80 0 .T. 8

关系——二维表——表文件(.dbf)实体 行 记录(Record)属性 列 字段(Field)

关系模型的性质 表的列确定了表的结构,结构不变,记录可以增删 表的每一列均有唯一的字段名 表中不允许有完全相同的两行 表中行的顺序与列的顺序可以任意交换在 VFP 中的表数据均以关系模型的方式组织,放置这样的表的数据库

Page 5: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

相应称为关系数据库数据库管理系统(专门用于数据管理的软件,提供了数据库定义和装

入、数据检索和存取、数据控制和数据库维护等功能)数据库(database)

数据库的定义数据库是一个包容器,可以包含一个或多个表、视图、到远程数据源的连接和存储

过程。数据库的主要特点冗余小、数据共享性、数据独立性

数据库管理系统(DBMS)管

理 和 维护数 据 库 的一组软件创建、 编辑、查询检索、统计、报表输出等等功能

Visual FoxPro即为基于关系模型的数据库管理系统数据库系统(DBS)

可实现数据处理的计算机软硬件资源VFP 的基础知识 VFP 的运行环境

软件环境: Windows 95(中文版)或更高版本,或者 Windows NT 4.0(中文版)或更高版本中。

硬件环境:CPU 486 66MHz 处理器以上 一个鼠标 16MB 内存 适量的硬盘空间(100MB左右)

VFP 的用户界面启动 VFP:

Page 6: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

“开始”程序Microsoft Visual FoxproMicrosoft Visual Foxpro

项目 说明菜单 系统菜单

动态菜单(系统菜单上的菜单项会随着用户的动态地增加或修改)弹出菜单(右击弹出,在不同的对象上右击会出现不同的菜单条。亦称快捷菜单)

工具条 一种特殊的窗口,可定制界面。在工具栏上右击或“显示”“工具栏”

命令窗口 VFP 内的一个可以输入命令即时得到响应的窗口命令窗口的作用:1.输入命令简便、迅速2.可以执行和运算菜单中没有的命令与函数3.便于学习与掌握命令和函数4.可帮助调试程序命令的输入与编辑:每条命令输入完毕按 Enter键

Page 7: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

字体与行矩的设置:由“格式”菜单项下的菜单命令完成

Visual FoxPro 语言特点 1。不区分大小写建议用户:对标识符使用固定的大小写规则,以便程序易读易维护2.变量使用前不必说明“变量赋值的同时定义了该变量”例:C = ’a sample.’ &&在使用时隐含地说明了字符型变量 C3.不能为变量指定数据类型 VFP 中的变量中存放的数据类型可变化,变量的类型是“暂时性”的

例:x = 5 (x 的类型为数值型) x = x>5 (x 的类型改变成为逻辑型) ? x显示结果:.F.

建议用户:在定义变量名时前导其数据类型标识符,如:cName4.两种注释格式(常用于程序中进行程序段或命令的说明)

整行注释 * <整行注释>NOTE <整行注释>

尾注释 <命令> &&<尾注释>

5.存储数据用户使用的数据:时间、数值、货币数量、日期、名称、备注说明等可直接使用,亦可存储。存储增加了处理的灵活性。6.数据容器容器类型 说明变量 在 RAM 中的单个数据元素表记录 多项预定义字段,每个字段可容放一个数据,表存储在磁盘上数组 在 RAM 中的多元素数据(相关数据的集合)7.处理数据

1.使用操作符(进行表达式运算)2.使用函数

通过数据赋给变量。 如:d=date()

Page 8: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

进行函数调用。如:cd getdir() 通过函数的返回值设置默认目录3.使用命令

8.两种处理方式命令方式(交互方式) 一条命令完成一个特定的动作。每条命令都有其

特定的格式。在命令窗口中完成

程序方式(自动方式) “命令的有序组合”通过程序文件或事件代码实施

VFP 中的数据 数据类型

类型 表达 存储 说明字符型 C 文本信息 总长度≤256B

整数型 I 无小数的数值 (-231,231-1) 如:年龄逻辑型 L 二个逻辑值的数据 .T.与.F.

数值型 N 数值货币型 Y 货币数额 赋值给变量时前导$

小数取四位,运算中自动四舍五入日期型 D 日期 如:出生日期 设置公元取否命

令:SET CENTURY ON/OFF

双精度 B 高精度数值备注型 M 量大的文本信息 以块的方式存在于.FPT 文件中

要求了解:用途和相关的格式

Page 9: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

数据存储常量

字符型 'Visual FoxPro 5.0' 说明:起止符只能用半角符号货币型 前导$

日期型 {03/10/99}

数值型逻辑型

变量

内存变量:临时使用的存放单元内存变量赋值方式:<变量>=<表达式>

STORE <表达式> TO <变量表>

字段

字段变量:同一字段随记录的不同变化取值(取值于表)字段的字段名、字段类型、字段长度在表设计阶段确定,字段是表中最小的数据项,容放一个数据。例对于如下成绩表 SS,XH、XM、CJ均为字段变量。

XH XM CJ

1 张三 90

2 李四 78

第二讲 VFP 语言基础

Page 10: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

主要内容VFP 中的数据类型VFP 中的常数、变量、表达式VFP 中的常用命令Visual FoxPro 中常用函数

VFP 中的数据类型 数据类型

类型 长度 存储 说明字符型 C 1-

254 文本信息 起止符货币型 Y 8 货币数额 赋值给变量时前导$

小数取四位,运算中自动四舍五入日期型 D 8 日期 如:出生日期 设置公元取否命

令:SET CENTURY ON/OFF

日期时间型 T 8 日期时间逻辑型 L 1 二个逻辑值的数

据.T.与.F.

数值型 N 不定 数值 内存中占 8 个字节浮点型 (同数值型)整数型 I 无小数的数值 (-231,231-1) 如:年龄

Page 11: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

双精度 B 高精度数值备注型 M 量大的文本信息 以块的方式存在于.FPT 文件中要求了解:用途和相关的格式实例练习X=’Visual FoxPro5.0’?X?TYPE(‘X’) &&求取变量 X 的类型A=$100.12345?A?TYPE(‘A’)

B=100?B?TYPE(‘B’)分析B 为什么不是别的类型?VFP 中的常数、变量、表达式 常数“在操作过程中保持不变的数据”

数值型常数数值型常数在内存中一律占 8 个字节。用于说明数值的大小形式有两种:自然表示法和科学表示法示例:100, 1234.56, 1.23456E-3货币型常数形式:$数值常数 (这里的数值常数必须是自然表示法)示例:$100,$-100.23字符型常数形式:由起止符界定的字符序列。起止符可为:双引号、单引号、中括号示例:”vfp2003”,[this is a sample]注意:起止符不可为全角符!逻辑型常数逻辑值只有两个:.T.(真)与.F.(假)表达真:.t., .T., .y., .Y.

Page 12: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表达假:.f., .F., .n., .N.日期型常数形式:由起止符{ }界定的日期序列。说明:根据 SET DATE TO 和 SET CENTURY ON|OFF 的设定而确定

日期格式 set date to ymd|mdy|dmy|long示例:

X={08/29/03}?TYPE('X')

变量变量的命名 以字母、汉字或下划线打头(尽量不用下划线) 后可跟字母、汉字、数字和下划线的字符串,其中不可有空格 避免使用系统关键字变量的赋值有两种方式: STORE 数据 TO 变量 1,变量 2,…… 变量=数据变量的类型根据赋值确定。在操作过程中,变量的值和类型都可以变化。

表达式数值表达式数值运算符:+、-、*、/、**(^)运算级别:先乘除,后加一,乘方在乘除之前,括号最优先运算项类型:数值型、整数型、浮点型、双精度型结果类型:数值型注意:如果有货币型数据参与运算,结果则为货币型 字符表达式运算符:+、-、$(完全连接,删除左侧尾空格连接,包含比较)运算级别:先+、-,后$示例:

A=’Visual ’B=’FoxPro 5.0’

Page 13: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

?A+B,A-B,’VFP’$A+B

日期表达式运算符:+、-

日期数据 ±数值日期日期数据 1-日期数据 2 数值(天数)

示例:A={10/01/03}B=date()?A-B?B+100?B-{02/11/84}

逻辑表达式关系运算符:<、<=、>、>=、=、==、<>(或#、或!=)关系表达式:一个简单的比较式关于比较:数值比较——按数值大小进行

日期比较——日期先者为小,后者为大字符比较——可以通过“选项”对话框设置Machine:按机内码顺序PinYin:汉字按拼音顺序 西文字符(由小到大):空格、小写字母、大写字母Stroke:汉字按照书写笔画的多少排序。西文同 PinYin。

Page 14: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

逻辑运算符:NOT(!)、AND、ORNOT(或!) <逻辑量><逻辑量 1> AND <逻辑量 2><逻辑量 1> OR <逻辑量 2>

表达式总结类型 运算符 运算对象和形式 说明字符操作符 +、-、$ 〈字符量 1〉±〈字符量 2〉C

〈字符量 1〉$〈字符量 2〉L+:完全连接-:去尾空格连接$:包含比较

日 期 、 时间操作符

+、- 日期(D)±天数(N) 日期(D)日期(D)- 日期(D) 天数(N)

逻辑操作符 NOT、AND、OR

NOT(或!) <逻辑量><逻辑量 1> AND <逻辑量 2><逻辑量 1> OR <逻辑量 2>

非、与、或(亦为运算顺序)

Page 15: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

关系操作符 〈、〉、〈=、〉=、=、#或〈〉、==

同类型量

算术运算符 +、-、*、/、%、**或^

运算对象为数值型量,其值为数值型

要求了解:各种操作符、各种类型的表达式、操作符的运算级别

练习:写出下列条件对应的表达式条件 表达式

学分在 5 分以上的课程总学时超过 60 学时的必修课所有的女同学计算机系(假定系代号为 01)的男同学

VFP 中的常用命令和函数 常用命令屏幕显示?<表达式表>——屏幕显示各项表达式的结果(显示时自动换行)??<表达式表>——屏幕当前位置开始显示各项表达式的结果Clear——清屏_Screen.Fontsize=<字号>——确定屏幕显示字体尺寸文件操作DIR [Path] [FileSkeleton]] ——显示文件目录情况COPY FILE Filename1 to Filename2——复制文件目录操作MD Path——创建指定目录RD Path——删除指定目录CD Path——改变当前目录SET DEFAULT TO Path——指定工作目录

Page 16: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

其它RUN 命令——运行 DOS命令QUIT——退出 VFP

VFP 中常用函数 数值函数

函数格式 功能与说明ABS(<Nexp>) 求绝对值MAX(X1, X2[,X3 ...]) 求最大值(自变量与返回值同类型)

例: ?max(4*5,90/7)MIN(X1, X2[,X3 ...]) 求最小值(类同上)

Calculate max(jbgz),min(jbgz) to x,y?x,y

MOD(X,N) X除以 N 的余数(同%运算结果)MOD(10,3)1

INT(X) 截取整数 如:INT(3.14)3INT(-3.14)-3

字符函数函数格式 功能与说明UPPER(X)LOWER(X)

将字符量 X 中的字母转换成大写或小写X=’Try!’?upper(x),lower(x)

ALLTRIM(X) 去首尾空格 RTRIM去首空格,LTRIM去尾空格

LEFT(X)RIGHT(X)SUBSTR(X,I[,N])

取字符

日期函数函数格式 功能与说明DATE() 求取系统日期(D 型)。如:?DATE()YEAR(D) 返回日期(时间)量所在的年份(N 型)

无论 SET CENTURY 后是 ON还是 OFF,返回值总带公元

Page 17: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

DAY(D) 返回日期量表达的是某月中的第几天MONTH(D) 返回日期量中的月份TIME() 求取系统当前时间

类型转换函数函数格式 功能与说明DTOC(D) 日期量转化为字符量CTOD(C) 字符量转化为日期量STR(X,L,N) 将数值量 X 转化为字符量。(长度为 L,小数位取N

位)A=3.145?STR(A,5,2) 3.15

练习写出下列任务对应的函数或表达式

条件 表达式求今天的日期求 9除以 2 的余数求 x 的绝对值假 定 一 个 人 的 生 日 是1972.5.1,求他的年龄和生存天数

第三讲 表的创建和数据录入主要内容

表的认识使用“表设计器”创建表

Page 18: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表结构的显示与修改表的打开与关闭表数据的录入与显示

如果可以把一个 Visual FoxPro 应用程序比做是一座大厦的话,那么,表就是其中一块块砖瓦——处理数据和建立关系型数据库及应用程序的基本单元。什么是表我们在日常的工作、生活中,遇到的大量的数据有很多都是以表格形式

出现的,如:班级表(bj.dbf)

班级代号 班级名称 系代号010111 微机应用 01 01020111 微机应用 02 01020121 电子商务 02 01020211 自动控制 02 02020311 信息管理 02 03

系表系代号 系名

01 计算机工程系02 机电工程系03 管理信息系

Page 19: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

以上是简单的二维表格,这二维表格就是我们所说的 Visual FoxPro 中的“表”。表格由行和列组成,表格中的每一行在 VFP 的“表”中称为一个记录,表格中的每一列则称为一个字段。

表的第一行通常是标题行,给出了表的结构;其余的行为表中的数据。VFP 中的表 = 结构 + 数据

使用表设计器创建表结构创建一个表,首先应该创建表的结构,这通常由“表设计器”来完成。

进入表设计器: 方法一.命令CREATE [<表名>]

方法二.菜单命令 “文件” “新建”文件类型选“表”左击“新建文件”

Page 20: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

设计器中有三个选项卡:“字段”、“索引”和“表”,默认的是“字段”选项卡。在该选项页面上可以进行表结构的设计

输入字段说明按表标题,对其中的每个列名进行分析,说明其名称、类型、宽度、小数

位数。字段名:可以用汉字或字母;类型:通过下拉列表框进行选择。注意字段的数据类型应与将要存储在

其中的信息类型相匹配。字符型:用于包含字母、汉字、数字型文本、符号、标点等一种或几种的字段,其中的数字一般不是用来进行数学计算的,如电话号码、姓名、地址。货币型:货币单位,如商品价格。数值型:整数或小数。如:成绩、年龄、订货数量。如果有小数,需要指定小数位数,小数点包含在字段宽度中,占一个字节。浮点型:同数值型。整 型:不带小数点的数值。日期型:用来存放日期数值。

Page 21: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

日期时间型:格式为:月/日/年 时:分:秒 AM 或 PM。如:04/28/97 06:26:00 AM。双精度型:双精度数值,如实验所要求的高精度数据。逻辑型 : 当 存 储 的 数 据只有两种 可 能 时使用 , 用 True(.T.) 和False(.F.)表示。如:是否结婚。备注型:量大的字符数据,它的存储和表中其他数据是分开的,存放在扩展名为.FPT 的文件中。通用型:可以链接或嵌入 OLE 对象,如由其他应用程序创建的电子表格、WORD 文档、图片。当链接 OLE 对象时,表中只包含指向数据的链接和创建OLE 对象的应用程序的链接。

宽度:设置以字符为单位的列宽。注意,一个汉字需占两个字符。小数位数:只对数值型、浮点型数据设置。

存储退出:选取“确定”按钮。(或按 Ctrl+W)退出时,系统会出现一个选择框,询问“现在输入数据吗?”。当选择

“是”立即开始输入记录。练习1.创建学生情况表,并输入部分数据;

Page 22: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

2.创建课程表。

CREATE-SQL 命令创建表结构命令格式:CREATE TABLE <表文件名>;

(字段名 1 字段类型[(字段宽度[,小数位数])];[,字段名 2 字段类型[(字段宽度[,小数位数])]]…)

其中字段类型必须用字母表示。例:用 CREATE-SQL命令创建课程表CREATE TABLE KC(KCDH C(2),KCM C(12),KSS N(2),BXK L, XF N(1))

练习2. 用 CREATE-SQL命令创建系表;2.用 CREATE-SQL命令创建班级表。

表的打开与关闭表的打开:

方法一:USE <表名>|? 方法二:“文件” “打开”文件类型选“表”“确定”

*1:刚建立的表自动打开;*2:对表的基本操作通常都应在打开表的基础上进行。

表的关闭: USE

Page 23: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表结构的显示与修改表结构的显示: 命令:LIST|DISPLAY STRUCTURE

在表设计器中修改表: 方法一:命令MODIFY STRUCTURE

方法二:“显示” “表设计器”

表中数据的录入与显示表的浏览

方法一:“显示”“浏览”

此时出现“教师表”浏览窗口,通过该窗口的滚动条可观察表中所有的数据。(表记录的显示)

方法二:命令 BROWSE [FIELD <字段名表>] [FOR <条件>]

[FREEZE <字段名>]

Page 24: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

[NOAPPEND] [NODELETE] [NOEDIT|NOMODIFY]

参数说明: FIELD <字段名表>:指定在浏览窗口中显示的字段。 FOR <条件>:指定在浏览窗口中显示满足条件的记录。 FREEZE <字段名>:指定一个可编辑的字段。其他显示的字段均不可编辑。 NOAPPEND:禁止对表追加记录 NODELETE:禁止对表进行有关删除、恢复的操作 NOEDIT|NOMODIFY:禁止对表进行修改

练习:1.浏览学生表(只读) 2.浏览学生表中所有女同学的记录信息 3.浏览学生表,并允许对 CSRQ 字段进行修改(其余字段不可更改)

表记录的追加方法一:在浏览窗口激活的情况下: “ ”显示 “ ”追加方式 (使该项设置有效)

Page 25: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

方法二:命令APPEND [BLANK]

练习1.用追加的方法给XS 表添加其余记录。2.为 KC 表录入记录。

表记录的插入(INSERT-SQL)命令:INSERT INTO <表文件名>;

[(字段 1[,字段 2…])] VALUES(表达式 1[,表达式 2…])例:给课程表 KC插入一条记录,内容为:KCDH KCM LLXS SYXS BXK XF

KCBZ

01 高等数学 40 20 .T. 5

INSERT INTO KC(KCDH,KCM,BXK) VALUES('11',' 大 学 信 息技术',.T.)

INSERT INTO KC VALUES('01','高等数学',40,20,.T.,5,’’)

说明:如有备注字段,用字符串定界符进行文本输入。上例语句中不可

Page 26: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

省略该项。练习1. 用 INSERT-SQL语句给XI 表录入三条记录。

xidh ximc

01 计算机工程系02 机电工程系03 管理信息系

2. 用 INSERT-SQL语句为 BJ 表录入记录。bjdh bjmc xidh

010111 微机应用 01 01

020111 微机应用 02 01

020121 电子商务 02 01

020211 自动控制 02 02

020311 信息管理 02 03

Memo 字段的输入步骤如下:

打开浏览窗口 双击memo 可进入 memo 字段的输入窗口

Page 27: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

输入、修改 关闭输入窗口。

Gen 字段的输入步骤如下:

打开浏览窗口 双击 gen 可进入 gen 字段的输入窗口 “编辑” “插入对象”

关闭输入窗口。

表记录的修改在“浏览”窗口中可修改表中数据,选择了追加方式后可输入新记录。 几点说明:

当输入内容满一个字段时,光标会自动跳到下一个字段。内容不满

Page 28: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

时,用 Tab键或回车键将光标移到下一字段。 当编辑备注型(memo)字段时,将光标条移到 memo 上,双击它就可进

入 memo 字段的输入窗口进行输入、修改。 为方便输入,也可以通过“显示”“编辑”切换到编辑方式进入

数据的录入与修改。(此时,列名显示在窗口的左边) 浏览完毕,单击窗口上的关闭按钮(或 Ctrl+w)可以保存并关闭窗口。如不想保存,按 ESC键回答放弃即可。

表记录的查询显示问题:1.显示课程表中必修课的记录;2.显示学生表中年龄在 20岁以下的学生名单

命令:LIST|DISPLAY [ <字段名表>|<表达式表>]

[<范围> [FOR <条件>] [OFF]

[TO PRINTER | TO FILE <文件>]

<范围>:指定要显示的记录范围,<范围>的四种可能情况是: ALL——表示所有的记录。 RECORD N——表示记录序号为 N 的记录。 NEXT N——表示当前记录以及当前记录后面的 N-1 个记录。 REST——表示当前记录以及当前记录后面的所有记录。

Page 29: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

说明:LIST 中缺省<范围>项时,默认值为 ALL;而DISPLAY 有两种可能:若后面无 FOR子句,默认为当前记录,若后面有 FOR子句时,默认为 ALL。

练习:1.打印学生表中全部记录2.显示学生表中所有学生的姓名、年龄3.显示课程表中总课时数多于 50 学时的课程记录

第四讲 表的基本操作

主要内容表记录的指针定位表记录的修改表记录的删除表中记录和字段的筛选

表记录的指针定位记录指针是 VFP 系统内部的一个指示器,它指向表要处理的那个记录。

记录指针指向的那个记录称为当前记录。 表记录的指针定位实现方式:

Page 30: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

菜单操作方式(自行练习) 命令操作方式

指针相关函数BOF()——头函数,测试记录指针是否位于表头(表头时其值为.T.)EOF()——尾函数,测试记录指针是否位于表尾(表尾时其值为.T.)RECNO()——记录指针指向的记录的序号(>=1)。RECC()——表中的记录总数。说明:刚打开一张表记录指针的情况

表中记录情况 BOF( ) RECNO( ) EOF( )无记录 .T. 1 .T.有记录 .F. 1 .F.

定位命令定位方式

命令 说明绝 对定位

GO TOP|BOTTOM [IN 区号|表别名]GO [RECORD] N [IN 区号|表别名]

*GO 与 GOTO 可互换* N 值超过记录总数会导致出错

文件头(包含表结构等信息)

Record 1Record 2 …………Record n

开始标志 (BOF)

结束标志 (EOF)

Page 31: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

相 对定位

SKIP [N] [IN 区号|表别名] *N 省略时默认 1* N 过大时,指向表尾* N 过小时,指向表头

条 件定位

LOCATE [范围] FOR <条件>CONTINUE*[范围]默认为 ALL 其它的三种情况是:

Record n、Next n、Rest*指针指向表中符合条件的第一条记录 ,无匹配记录时指向表尾

命令只是定位,不会显示相应记录,可以与 DISPLAY配合进行所定位记录的显示

例:设 XS 表中有 11条记录,填表说明下列命令执行后指针情况 命令 BOF() EOF() 当前记录号 RECNO()USE XSSKIP –1GO 3SKIP 2SKIP –4LOCATE FOR ‘王’$XMCONTINUESKIP 20SKIP –20

练习:1.显示表 XS 中的第 5条记录及后续记录2.显示表 XS 中的前两名女同学记录

表记录的修改 浏览修改

在浏览窗口中进行数据编辑成批替换

方法一:在浏览窗口中进行

Page 32: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

步骤:1) 打开表 2) 浏览表 3) “表”→“替换字段”

方法二:UPDATE-SQL命令UPDATE <表名> ;

SET <字段 1>=<表达式 1> [,<字段 2>=<表达式> … ]; WHERE <条件表达式>

说明:1、字段与表达式应同类型;2、凡是 SQL命令的使用不要求预先打开表。3、SQL命令运行后,所操作表不会自动关闭。4、条件由 WHERE引出(不是 FOR!)

练习:1.给成绩表中所有 55 分以上的成绩增至 60 分。2.将表 XS 中“林一平”的记录姓名改为“林平”3.将表 KC 中各课程的理论学时统一增加 4节

表记录的删除逻辑删除:

方法一:在浏览窗口中直观进行,或“表”→“删除记录”

方法二:DELETE-SQL命令 DELETE FROM <表名> [WHERE <条件表达式>]

说明:逻辑删除的记录通常仍参与各命令的操作,除非进行隐蔽设置 隐蔽设置命令: SET DELETED ON|OFF (ON 时隐蔽,OFF 时开启)

Page 33: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

练习:1.删除学生成绩表中成绩小于 40 分的记录2.删除课程表在所有的选修课的课程记录3.删除成绩表中成绩低于 30 分的记录

恢复记录:方法一:在浏览窗口直观操作,或执行菜单命令“表”→“恢复记录”

方法二:RECALL命令 RECALL [范围] [FOR <条件>]说明:物理删除的记录不可再恢复。

物理删除:方法一:在浏览窗口活动时,执行菜单命令“表”→“彻底删除”方法二:PACK命令

PACK 说明:在表独占的方式下有效

注意:利用该命令删除的记录是不可恢复的一次性删除:命令:ZAP

注意:利用该命令删除的记录是不可恢复的,也须在表独占方式下操作。

Page 34: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表数据的过滤筛选记录

记录筛选是指从表中选出满足指定条件的记录来参与浏览或其它命令的操作,不满足条件的记录则被隐藏起来。

菜单操作方式步骤如下:

1. 打开表2. 浏览表

3. “表”→“属性”

命令操作方式命令:SET FILTER TO [<条件>]说明:这样的记录过滤对 SQL 语句无效(如: SELECT-SQL 、 DELETE-

Page 35: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

SQL、UPDATE-SQL)示例:写出下列命令组的功能命令组 功能USE XSSET FILTER TO XB=’男’BROWSEUSE KCSET FILTER TO BXKDELETE FROM KCPACK

筛选字段筛选字段是选取表的部分列菜单操作步骤:

打开表 浏览表 “表”→“属性”

在“工作区属性”对话框中单击“字段筛选指定的字段”选项,后按“字段筛选”命令按钮

4.在弹出的“字段选择器”对话框中选择适当字段

Page 36: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

第五讲 表的索引和快速查找主要内容

表索引的意义创建表索引索引的使用索引文件的记录指针定位

问题:1.按姓名的字典序显示学生表中的学生记录;2.按总课时数显示课程表中的课程记录;

Page 37: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

3.按年龄显示学生表中记录。解决方案:先索引将索引设置为主控索引显示

表索引有何意义索引的认识

什么叫索引所谓索引,是对表中的数据根据关键字的值进行逻辑排序的一组指针,

由此对表中的数据建立一种逻辑顺序。Visual FoxPro 中的索引保存在索引文件中。当索引文件与表一起打开时,可以设置

索引文件中指针处于作用状态,此时,表的数据操作就按逻辑顺序进行。注意:索引本身并不改变表中数据的存储顺序,它只在 Visual FoxPro 读取记录时

才发生作用。索引与排序的区别排序生成新的表文件。一个排序的表文件的排序依据只有一个。索引只生成索引文件,索引文件是由一系列记录号组成的列表,不放置表中具体

的记录信息。一个索引文件中可登记多个索引。索引关键字建立索引的依据,可以是一个字段或表达式。

索引提供了对数据的快速访问 在没有建立索引的情况下,对一个表进行操作是按记录的输入顺序(物理顺序)

进行的。当表的数据容量较大时,这种顺序操作方式的速度比较慢。索引是解决这个问题的一个有效的方法。 索引可对表的各记录强制实现唯一性如XS 表中,每个学生的学号应用是唯一的。对学号进行一种特别的索引后,在记

录输入时可防止两条记录采用相同的学号。

创建表索引表设计器创建表索引

Page 38: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

进入表设计器后,在“索引”选项卡下进行创建。 排序:升序或降序 索引名:索引的标识名 索引类型:

候选索引 组成候选索引的关键字段或表达式,在表中不能有重复的值。一旦建立了候选索引,同样会对表数据编辑进行索引关键字同名限制。一个表可以创建多个候选索引。

普通索引 普通索引可用来对记录排序和搜索记录,它不强迫记录中的数据具有唯一性,允许关键字段或表达式出现重复值。在一个表中可以创建多个普通索引。

唯一索引 唯一索引在构建一种逻辑顺序时,允许关键字段或表达式出现重复值,但它不允许两个记录具有相同的索引值。即在索引对照表中只存储具有重复值的第一个记录的信息,而忽略其他关键字同值的后续记录。

表达式:按该表达式进行索引。可直接对字段索引。 筛选:索引对选定的记录进行。当该索引起作用时,命令只操作这些记录。无此项时,对所有的记录索引。

这样的索引文件与表同名,扩展名为.CDX。称为结构复合索引文件。相关的函数:CDX(1)——返回结构复合索引文件的名称(总是与表同名)

命令创建索引命令:INDEX ON <关键字> TAG 标识

[ASCENDING|DESCENDING] [UNIQUE |CANDIDATE]

Page 39: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

参数说明 ASCENDING|DESCENDING:升、降序选择(默认升序) UNIQUE:唯一索引

CANDIDATE:候选索引(默认普通索引)练习1.对表 XS 进行如下索引:

按姓名、系、性别进行普通索引按年龄从小到大的顺序进行普通索引按学号进行候选索引按系进行唯一索引(思考一下什么意思)

2.对表 KC 进行如下索引:按课时数(升序)、必修课进行普通索引按课程代号进行候选索引按必修课进行工号进行候选索引

3.对表 CJ 进行索引:合适于候选索引的关键表达式如何组织?按课程代号进行普通索引按学号进行普通索引

索引的使用重新认识 USE 命令

USE命令不仅可以打开表,若表建有结构复合索引文件,则该索引文件与表一起打开。

设置主控索引所谓主控索引,即在表操作命令中起作用的索引。在一个时刻只有一个索引对表

起作用。索引文件打开后,其中的索引并不立即起作用,需要用命令将其中的一个索引设

定为主控索引。设置命令: SET ORDER TO [TAG] 标识

删除索引方法一:表设计器中进行方法二:命令DELETE TAG 标识名表 DELETE TAG ALL

Page 40: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

练习:1.利用已建索引对学生表进行如下操作: (1)按学号的的升序显示表中记录 (2)按年龄的降序显示表中记录 (3)按系与班级显示表中记录 (4)分别显示 XS 中年龄最大与最小的两名学生姓名2.对课程表进行如下操作:

(1) 按课时数的升序显示所有必修课的记录信息 (2)按学分的降序显示表中的记录

说明:在索引起作用时,GO TOP|BOTTOM、SKIP总是按主控索引指定的逻辑顺序进行指针的定位。

说明下面命令组的功能:USE KCINDEX ON XF TAG XF DESCENDINGGO TOPDISPSKIPDISP

索引文件的记录指针定位(快速查找)SEEK 命令

命令: SEEK <表达式> [ORDER 标识] [ASCENDING|DESCENDING]功能:按当前索引或指定索引序定位到与索引关键字匹配的记录说明:对当前表,按当前主控索引操作; 找到匹配的记录,FOUND()=.T.

EOF()=.F.,否则反之;可与 DISPLAY配合显示记录,SKIP查找下一条匹配记录。练习(对 XS 表):1:定位并显示出生日期为 11/02/1983 的记录2. 快速定位“朱元元”的记录,并显示

SEEK 函数函数格式:SEEK(表达式)功能:同先执行 SEEK命令,然后执行 FOUND()函数的结果一样。

其它的索引文件

Page 41: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

在 VFP 中从索引文件的结构,有三类索引文件 结构复合索引文件 非结构复合索引文件——是临时的复合索引文件,表可脱离它。在需要时打

开。文件名由用户命名,扩展名为.CDX。 独立索引文件——其中只含一个索引的文件。临时性,需由命令打开。文件名

由用户命名,扩展名为.IDX。问题:表 XS 有三个索引文件,其名分别是:XS.IDX、XS.CDX、XMXH.CDX,你能区分它们吗?

第六讲 数据库·项目管理器主要内容

数据库的定义(表的分类)数据库的设计过程数据库的创建、打开、关闭与维护项目管理器的认识和创建项目管理器的基本操作

数据库的定义数据库是什么

数据库的定义数据库是一个包容器,可以包含一个或多个表、视图、到远程数据源的连接和存储

过程。

Page 42: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表置放在数据库中的原因例如:一个学生成绩管理系统,将涉及学生、课程、成绩等实体,分别用如下表格

表示:表一 学生表:(XS.DBF)

学号 姓名 性别 出生日期 班级代号 系代号

表二 课程表:(KC.DBF)课程代号 课程名 课时数 必修课 学分

表三 成绩表(CJ.DBF)学号 课程代号 成绩

这些表并不是独立的。它们之间有着密切的关系。比如:成绩表中的每一个成绩都就属于某个学生,否则该成绩是没有意义的。类同:学生表与班级表、学生表与系表、成绩表与课程表都存在着联系。所以:在数据库中并非简单地放置表,还包含了表之间的关系。

Page 43: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

数据库的三个相关文件 数据库文件——.DBC 关联的备注文件——.DCT

关联的索引文件——.DCX

自由表和数据库表根据一个表中否在数据库中可将表划分为二类:数据库表——放置在数据库中的表。自由表——没有置放到数据库中的表。

类别 自由表 数据库表定义 独立于数据库的表 存放在库中的表主要特征 与其他表无关联 可通过关键字与其他表发生关联

可为表设置字段属性和表属性建立方式 1.没有库打开时建立

2.将表从数据库中移出1. 在库打开时建立2.将自由表移入库

说明:一个表不能同时放置到多个数据库。不管是自由表还是数据库表,均以“.DBF”为扩展名。

数据库的设计过程数据库的设计,致关重要的是掌握以下两点:

确定需要的表 确定表之间的关系

确定所需的表基本原则:把不同主题的信息保存到不同的表中。要尽避免在一张表中存储重复

数据。以学生成绩管理系统示例来讨论:其中的基本数据是学生、班级、系、课程和所学课程的成绩。方案一:设计一个表,统一地放置所有学生、课程和成绩信息存在问题:由于一个学生学了多门课程,一门课程被多个学生所学,因此该表中,

一个学生的信息将被重复多次。表例:2 个学生学了 3门课。(一个学生的信息被重复 3 次,而一门课程的信息被

重复了两次)

Page 44: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

学号 姓名

性别

出生日期

联系电话

班级名 系名 课程

名课时

数必修课

学分

成绩

02011101

李林 男 02/12/1

983

0512-58221363

微 机应 用02

计算机工程系 英语 50 T 3 78

02011101

李林 男 02/12/1

983

0512-58221363

微 机应 用02

计算机工程系

高 等数学 80 T 6 80

02011101

李林 男 02/12/1

983

0512-58221363

微 机应 用02

计算机工程系

C语言 66 T 8 77

02012101

孙虹 女 07/30/1

981

0513-55010092

电 子商 务02

计算机工程系 英语 50 T 3 60

02012101

孙虹 女 07/30/1

981

0513-55010092

电 子商 务02

计算机工程系

高 等数学 80 T 6 65

02012101

孙虹 女 07/30/1

981

0513-55010092

电 子商 务02

计算机工程系

C语言 66 T 8 74

进一步,如果有 1000 个学生学 5门课,那么,当把学生、课程和成绩信息放在一张表中时,这张表将有 5000 行,每行有 10 个字段,所以总的数据量为:5000*10=50000。

重复的信息将造成如下后果: 表中数据的成倍增加和用户数据录入量的增加 重复和录入容易导致错误,从而造成数据的不一致性 有用的信息容易被删除

方案二:设计五个表,分别放置学生信息、系信息、班级信息、课程信息和学生的成绩信息需解决问题:正确表与表之间的关系

确定表之间的关系减少表中重复数据的方法是:将一张表拆成几张表。以学生成绩管理系统示例来讨论五个表之间的关系

Page 45: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

1、 系表与学生表之间应有共同字段2、 班级表与学生表之间应有共同字段3、 学生表与成绩表必须公有学号字段,否则成绩表中的成绩无法对应到学生表

中某个学生。4、成绩表中还得有课程代号字段,否则成绩表中的成绩无法对应到课程表中某门课程上去。

思考:为什么不用姓名字段作为学生表与成绩表之间的公共字段?

数据库的基本操作 创建数据库 方法一:菜单命令 “文件” “新建”文件类型选“数据库”左击“新建文件”

方法二:CREATE DATABASE [〈Filename〉| ?]

打开与关闭数据库 打开数据库:OPEN DATABASE [<Filename>/?] 关闭数据库:CLOSE DATABASE [ALL] [说明] 1.在数据库打开时建立的表自动放置在数据库中; 2.当数据库关闭时,库中的表自动关闭。

指定当前库 SET DATABASE TO [<Filename>]

Page 46: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

[说明] 1.只能指定打开的库

2.无<Filename>时, 不指定当前库(打开的库依然保持打开状态)

相关函数:DBC()——求取当前数据库的标识符。数据库表的添加与移去 向数据库添加表 工作状态:数据库打开,所操作的表关闭

意义:将自由表添加到数据库中,使之成为库表。本质上是在库文件与表文件中互相记录下对方的信息,明确它们之间的“父子关系”,术语称之为:建立起一个双向链接。命令:ADD TABLE <TableFilename>

从数据库中移去表 工作状态:数据库打开,所操作的表的状态无要求(可打开也可关闭)

意义:将库表移出数据库,成为自由表。实际上是删除库与表之间的双向链接信息,即断绝“父子”关系。命令:REMOVE TABLE <TableFilename> [DELETE][DELETE]:将表移出数据库的同时从磁盘上删除说明:一个表只能属于一个数据库

删除表与数据库的链接前提:数据库被意外删除,表中还登记着数据库的信息。

意义:将失去了数据库的数据库表恢复成为自由表。不恢复的话,这些表将无法添加到其它数据库中。命令:FREE TABLE <TableFilename> 说明:如果数据库完好时,该命令没有作用。

数据库的维护 修改数据库

命令:MODIFY DATABASE [<Filename>|?]功能:打开数据库并调出数据库设计器

Page 47: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

关于数据库设计器 “数据库设计器”窗口以直观的方式显示数据库中包含的全部表、视图和关系。

在“数据库设计器”窗口活动时,Visual FoxPro 显示“数据库”菜单和“数据库设计器”工具栏。(右图)

工具按钮:新建表、添加表、移去表、新建远程视图、新建本地视图、修改表、浏览表、编辑存储过程、连接

删除数据库命令:DELETE DATABASE <Filename>|? [DELETETABLES]

工作状态:数据库应关闭 显示数据库信息命 令 : LIST|DISPLAY DATABASE [TO PRINTER|TO FILE

<Filename>] 工作状态:数据库应打开

思考:由该命令观察数据库中存放了怎样的信息练习:1.在D盘上建立文件夹 STUDENT,并设定为默认目录;2.根据已有的XS、KC、CJ、XI与BJ表,通过数据传递的方法,在D:\STUDENT下分别生成同名的表;

3.在D:\STUDENT下创建数据库XSSJ;4.打开数据库 XSSJ,并调出数据库设计器;5.将五个表分别置放在数据库XSSJ中。

项目管理器的认识和项目文件创建项目管理器的作用

项目管理器是 VFP 中的应用系统开发管理中心。项目管理器的作用组织和管理应用程序所需要的所有文件(包括程序、表单、菜单、库、报表、标签、

查询和一些其他类型的文件),便捷开发人员的操作。在开发的最后阶段,可由项目管理器进行系统连编,生成可执行文件。项目文件项目管理器是可见的界面,本质上也是文件记录的信息,并籍此进行信息的统一

Page 48: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

管理。这种提供了有效管理的文件称为项目文件, 扩展名——.PJX。项目文件的创建、打开和关闭

项目文件的创建方法一:菜单命令 “ ”文件 “ ”新建 “ ”文件类型 项目 “ ”新建文件

方法二:命令CREATE PROJECT 〈项目文件名〉说明:新建的项目自动打开项目的打开方法一:菜单命令 “ ”文件 “ ”打开 文件类型选.pjx “ ”选文件后 确定

方法二:命令MODIFY PROJECT 〈项目文件名〉项目的关闭直接单击项目管理器的关闭按钮说明:关闭项目时,其中管理的数据库文件、表文件自动关闭

认识项目管理器

选项卡:分类显示数据展开/折叠按钮:展开和折叠“项目管理器”。 与工具栏类似,可将“项目管理器”拖动到屏幕顶部(或双击标题栏),实现

Page 49: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

“项目管理器”的停放,“项目管理器”停放后,自动折叠,只显示选项卡。 项列表:以类似于大纲的形式组织各项,如果某类型数据项有一个或多个数据项,则在其标志前有一个加号(+),单击加号可查看此项的列表,单击减号可折叠展开的列表。

按钮:对当前选定对象进行操作

项目管理器的基本操作表的基本操作

表的创建、修改、浏览创建数据库

数据库的创建、修改、移去表、添加表练习:1.在D:\STUDENT下创建项目文件XSGL.PJX;2.将数据库 XSSJ添加到项目中,请检查库中的四个表是否在项目中;3.将XS、CJ 表从数据库中移出(但不要删除);4.将XS 表添加进数据库 XSSJ;5.将 CJ 表添加进项目下的自由表栏中;6. 对 CJ 表进行结构修改;7.浏览XS 表的记录内容;8. 在项目管理器中新建数据库 QQ,请检查库 QQ 是否在项目中;9. 在项目管理器中调出 QQ 库(进入数据库设计器);10.新建自由表 QQ;11.在数据库 XSSJ 中新建表 QQ1。

第七讲 定制数据库表主要内容

实验示例数据库从可操作性上比较数据库表与自由表数据库表的字段属性数据库表的表属性

Page 50: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

数据库表主索引的认识与创建问题:1. 数据库是什么?如何创建?2.什么是数据库表?如何为数据库 JXSJ创建表?3. 一个自由表如何转换成数据库库?4.如何理解项目管理器?5. 在项目管理器中,可对数据库和表进行怎样的操作?

实验示例数据库最基本的元素——表学生表(XS.DBF)

学号 姓名 性别 出生日期 联系电话 班级代号.XH XM XB CSRQ DHHM BJDH... ...

课程表(KC.DBF)课程代号 课程名 理论学时 实验学时 必修课 学分KCDH KCM LLXS SYXS BXK XF... ...

成绩表(CJ.DBF)学号 课程代号 成绩XH. KCDH CJ... ...

班级表(BJ.DBF)班级代号 班级名称 系代号BJDH BJM XIDH... ...

系表(XI.DBF)系代号 系名

Page 51: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

XIDH XIMING... ...

思考题:1. 为什么将这些表放在同一个数据库中?2. 通过哪些表,可查阅学生“张三”修学课程及各门功课成绩?3.利用哪些表,可列出每个课程的修学成绩?4.如何查看各表结构和数据(假定各表已存在)

从可操作性上比较数据库表与自由表 数据库表可设置更多的信息 字段属性 表属性 有更丰富的索引类别 主索引 候选索引 普通索引 唯一索引 数据库表间可建立关系

数据库表字段的扩展属性字段属性的设置

在表设计器中进行(字段选项卡下)

字段属性的意义字段的显示属性字段的显示属性用来指定输入和显示字段的格式属性,包括:格式、输入掩码和

标题。

Page 52: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

字段的标题 意义:字段名简化,以便于操作(在浏览与表单中替代字段名)

注意:标题不可作为字段名用具体作用:1、给字段加标题后,浏览表时,VFP会自动以标题代替原来的字段名。2、给字段加标题后,设计表单时,如果将字段直接从数据环境中拖放到表单上,

VFP会自动以标题作为字段的说明文字。

字段的注释 作用:说明字段的含义。注释是为了使表具有更好的可读性。 字段的格 式 (FORMAT) 作用:指定字段显示样式。常用的字段格式:A 只允许字母字符(不允许空格或标点)D 使用当前的 SET DATE格式

SET DATE TO YMD|MDY|DMY|LONGK 当光标移到文本框上时,选定整个文本框L 在文本框中前导零,而不是空格。该设置只用于数值型数据T 删除输入字段前导空格和结尾空格。! 把字母转换为大写字母。^ 使用科学记数法显示数值型数据

Page 53: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

$ 显示货币符号如:1、工资显示成 739.23――7.3923E+22、工资显示成 739.23――$739.23$3、把工号中出现的字母一律显示成大写4、在系名输入时禁止输入空格或标点5、浏览显示姓名时自动去掉前后空格 T

字段的输入掩码 (INPUT MASK) 作用:指定字段中输入数据格式。

注意:只对相应位置的字符起作用,而不是对整个字段。输入掩码:

设置 说明X 可输入任何字符9 可输入数字和正负号# 可输入数字、空格和正负号* 在值的左侧显示*. 指定小数点的位置, 分隔小数点左边的整数部分

字段验证规则 字段的默认值 作用:追加或插入记录时,自动取该值注意:字段的默认值与字段类型必须匹配 字段的有效性规则 作用:对该字段的输入数据进行限制注意:有效性规则是一逻辑表达式(验证条件)说明:在插入或修改字段值时激活并检验该规则。 字段的有效性说明 作用:当字段的输入数据不符合有效性规则时的提示信息说明:有效性说明应是字符表达式,对于直接的字符文本须加定界符

练习:1.给KC 表的每个字段设置标题2.给下列字段设置默认值: SYXS——0

Page 54: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

LLXS——50 XF——5 BXK——.T. 思考:这些默认值在什么时候起作用?

3.给KC 表中的字段设置如下规则并附以有效性说明:LLXY不低于 20 学时SYXS不低于 0 学时XF最小为 2

思考:在什么时候检验这些规则?数据库表的表属性

数据库表的表属性有:长表名、表的注释、表记录的有效性规则与说明以及触发器等。表属性的设置

在表设计器中进行(表选项卡下)

长表名表名

Page 55: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

意义:作为表的标识(在项目管理器、库设计器中以长表名替代表名)注意:不同于表的文件名,表的文件名在创建时确定。在数据库打开的情况下,可以该名打开表。此时有两种打开方式:

USE 表文件名USE 长表名

表的注释作用:说明表中数据来源或组织方式等信息

表记录的验证规则设置时机:在输入记录时,需通过两个以上的字段来确定所输入记录是否合适激活时机:在记录值改变时激活(修改或添加记录时)说明:记录被删除时不使用有效性规则。示例:总课时数不能超过 120(涉及到了两个字段)

表的触发器本质:记录级事件代码。简单的情形是一个逻辑表达式。作用:当用户向表中插入、更新或删除记录时,系统将据此进行记录验证。如触发

器代码(逻辑表达式)为真值,通过。否则操作无效。触发器的类别:三种触发器,不同的事件引发不同的触发器。

插入触发器:(INSERT增加记录时触发) 更新触发器:(UPDATA 数据更新、修改时触发) 删除触发器:(DELETE删除记录时触发)

说明:触发器在表记录验证通过后运行示例:1、当表中已有 100条记录以后不能添加

插入触发器:RECC()<=100  2、一个表只读

三个触发器均设为.F.

Page 56: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

创建触发器:二种方式 表设计器 命令CREATE TRIGGER ON 表名 FOR INSERT AS 逻辑表达式CREATE TRIGGER ON 表名 FOR UPDATE AS 逻辑表达式CREATE TRIGGER ON 表名 FOR DELETE AS 逻辑表达式移去触发器:二种方式 表设计器 命令DELETE TRIGGER ON 表名 FOR INSERT|UPDATE|DELETE

练习:1. 设置表标识名。 KC——课程设置表 XS——学生情况表 CJ——成绩表 思考:长表名在何处体现?能不能用 USE 学生情况表 打开 XS 表?

2.给XS 表设置如下操作限制: GL 达 5年的记录不能删除 记录满 100条后不可插入记录3.将 CJ 表设置为只读思考:为什么自由表不能设定属性和有效性规则?进一步,当表从数据库中移出时,可能丢失的信息是什么?数据库表主索引的认识与创建 主索引的认识 (PRIMARY KEY)

在指定字段或表达式中不允许出现重复值的索引。只能对数据库表创建和使用主索引。一个表只能创建一个主索引。主索引一定保存在结构复合索引文件中。 主索引的作用

Page 57: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

同候选索引一样可以限制主关键字的重复输入;(前提是当前表中主关键字没有重复值)

数据的主索引可用于主表,用来创建一个永久关系。 主索引的创建

在数据库表的表设计器中进行(“索引”选项卡下进行)

思考与练习:1.对 KC 表中的哪个字段可以进行主索引?试操作之2.对 XS 表中的哪个字段可以进行主索引?试操作之3. 对 CJ 表中的字段可否进行主索引?若要对 CJ 表设置主索引,如何设计索引关键字?4. 对 XI 表中的字段如何索引合适?5. 对 BJ 表中的字段如何索引合适?

第八讲 关系与参照完整性主要内容

表之间关系的认识分析并确定表之间的关系创建数据库表间的永久关系生成参照完整性

Page 58: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表之间的临时关系表之间关系的认识关系是表间的链接

关系是表之间的一种链接,它允许你在访问当前表数据的同时,访问其他表中对应的数据。关系基于联接条件

表间的链接必须基于一个合适的联接条件(简单地说有共同字段)。只有两个相关的表才能建立关系。表之间常见的三种关系

一对一关系一个表中的每一记录均与另一表中的每一记录相关联。 一对多关系父表中的每一个记录可与相关表中的多个记录相关联。 多对多关系一个表中的多个记录在另一表中同样有多个记录与其匹配。

分析并确定表之间的关系就成绩管理系统为示例,在 XSSJ 库中有表:XS、KC、XI、BJ、CJ,思考如下问题:

1. XS 表可否与 KC 表建立关系?2. XI 表可与哪些表建立关系?3. KC 表可与哪些表建立关系?4. CJ 表可与哪些表建立关系?

创建数据库表间的永久关系永久关系的含义

数据库表之间的关系作为数据库的一部分保存在数据库文件中,这样的关系不会因为表、库的关闭而消失,故称为永久关系。永久关系的作用

在以后的设计(查询、视图、表单、报表)中使用建有关系的表时,永久关系将作为表间的默认链接,提供了数据访问的自动关联模式。创建永久关系的前提

在为同一个数据库的两个表建立一对多关系,要满足三个条件: 两个表要有公共字段 父表在公共字段上已建有主索引或候选索引

Page 59: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

子表在公共字段上建有普通索引。一对多关系 意义 相关索引XS 与 CJ 一个学生可修学多门课程 XS 表中对 XH 作主索引

CJ 表中对 XH 作普通索引XI 与 XSXI 与 BJKC 与 CJBJ 与 XS

永久关系的创建在数据库设计器创建。操作方法:选择父表中想要关联的索引标识名,拖动鼠标到子表的相匹配的索引

标识名上。说明:关系在数据库设计器中体现为两个表之间的一条连线。

永久关系的删除在数据库设计器直接删除。

操作方法:选定关系连线→此时关系线变粗→ 右击鼠标弹出快捷菜单→ 选“删除关系”(或直接按 Del键来删除关系)

练习:在 XSSJ 数据库中为表建立一对多永久关系

生成参照完整性参照完整性的作用

使得具有永久性关系的表之间,相互“参照”,以控制数据一致性,保持记录数据的完整性。表之间参照完整性的设置

在“参照完整性生成器”对话框中设置。

Page 60: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

参照完整性表格说明:父表:显示一对多表关系的一方(表名)。子表:显示一对多表关系的多方(表名)。

更新:显示关系中参照完整性的更新规则。 删除:显示关系中参照完整性的删除规则。 插入:显示关系中参照完整性的插入规则。 父记号:父表在公共字段上的索引标识名。 子记号:子表在公共字段上的索引标识名。参照完整性规则 更新规则(修改父表中关键字值时所适用) 级联——更改父表主关键字段时,系统自动更改子表中的相关记录。 限制——当子表中有相关记录时,禁止更改父表关键字段的值。 忽略——更新总是允许,不管子表中的相关记录。

删除规则(删除父表中的记录时所适用) 级联——删除父表中的记录时,子表中相关记录自动删除。 限制——当子表中有相关记录时,禁止删除父表中的记录。 忽略——删除总是允许,不管子表中有无相关记录。 插入规则(子表中插入新的记录或更新已存在的记录时所适用) 限制——如父表中没有匹配的的关键字值。 忽略——向子表中插入记录总是允许,不管父表中是否有匹配记录。

Page 61: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表之间的临时关系认识临时关系 临时关系不局限于数据库表。临时关系是即建即用的,当表关闭后关系自动解除。临时关系的作用

临时关系可通过父表的操作控制子表的记录,可实现记录指针联动。创建临时关系的前提

——父表与子表有一个公共字段——父表与子表均在公共字段上建立索引——必须在两个不同的工作区中打开父表与子表。

临时关系的创建

在数据工作期窗口创建操作方法:窗口→ 数据工作期

建立关联并浏览关联表的基本步骤:

打开需要关联的表(自动列于“别名”列表框中)

Page 62: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

“别名”列表框中选定父表,单击“关系”按钮选定子表,在随后弹出的表达式生成器中

组织关键字表达式,按“确定”选择“关系”列表框中的父表按“一对多”按钮

在随后弹出的“创建一对多关系”对话框中选取子表

在“别名”列表框中选定父表,按“浏览”按钮在“别名”列表框中选定子表,按“浏览”按钮

练习:1. 为数据库 XSSJ 中的表 KC 与 CJ建立临时关系,并浏览两表。2.如果表 KC 与 CJ不在数据库中,可否建立临时关系?3.在命令 CLOSE DATABASE 后,临时关系是否还存在? 4. 为表 XS 与 CJ建立临时关系,并浏览两表。

第九讲 查询设计 主要内容

查询的认识利用查询向导创建查询利用查询设计器创建查询查询设计练习

问题:1.查询显示每个系的班级设置;2.查询显示每个学生的选学课程的成绩情况;3.查询显示各门课程的学生选修名单和成绩;4.查询统计各系学生人数

Page 63: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

查询的认识查询运行结果示例

查询的定义如果要给“查询”下一个定义,可以这样说:查询是指向一个数据源发出的检索

信息的请求,它使用一些条件从表和视图中提取操作所需要的记录。查询数据源 查询的数据源是在同一个数据库个的表和视图,也可以是自由表。

查询的目的查询的运行结果是基于表和视图的动态的数据集合。查询大体上可以完成如下工

作: 实现单表记录筛选、按序显示 实现多表联合数据查询 对单表或多表按某个依据进行数据检索统计

查询文件查询保存在扩展名为.QPR 的文件中。在该文件中,具体内容是一条

SELECT-SQL语句,象如图 5-1所示的数据并不保存在查询文件中,这些数据只是运行查询(即实时执行 SELECT-SQL语句)的产物。有关查询的说明

查询结果反映了表中最新的数据情况,其结果是不可更新的;

Page 64: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

查询的结果是基于表或视图的动态的数据集合创建查询的两种途径

查询向导交互式创建查询 在查询设计器中自行设计和修改查询方法:在项目管理器中,数据选项卡查询“新建”

利用查询向导创建查询VFP 提供了三个查询向导

用系统提供的查询向导来创建查询,只需按向导的各步骤对话即可完成。由“查询向导”进行到如下对话框。

当前选中一个向导时,就会在“说明”下的框中出现有关向导用途的说明。它们的作用分别是:查询向导:创建单表或多表查询;交叉表向导:创建交叉表查询;图形向导:以图形方式建立查询。下面仅对查询向导和交叉表向导的创建方法进行介绍。图形向导略,可在学习视

Page 65: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

图后再自行研习。查询向导

创建步骤针对“查询显示每个学生的课程选修情况”的问题展开如下:(1)字段选取确定所建查询是对哪些表的哪些字段进行,可以从几个表和视图中选择字段。首

先,从一个表或视图内选择字段并且移到“选定字段”框中,然后从另外表或视图中选择并移动字段。

在本例中选择XS 表的 XH、XM,KC 表的 KCDH、KCM、BXK,成绩表的 CJ 字段。

(2)为表建立关系可以从字段列表中选择匹配的字段用以决定表或视图之间的关系。

Page 66: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

本例中涉及到两个关系,KC 表与 CJ 表以 KCDH 为公共字段的关系,CJ 表与 XS表与 XH 为公共字段的关系。

【注意】在设置多个关系时,不要把同一个表写在关系的一边。(3)筛选记录通过设定筛选记录的表达式,可以减少记录的数目。可以设定两个表达式,然后

用“与”或者“或”连接,返回相应逻辑关系的记录。

字段和操作符可从列表中选取。“预览”按钮允许查看基于筛选条件返回的记录。

Page 67: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

本例不需要进行筛选,直接按“下一步”即可。(4)排序记录最多选择三个字段或一个索引标识以确定查询结果的排序顺序。

本例中选择第一个排序依据为 XH,第二个排序依据为 KCDH。在排序记录的基础上,可以进一步限制记录。

Page 68: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

根据一定百分比的记录,或者选择一定数量的记录,可以进一步限制查询结果中的记录数目。例如,要查看前 10 个记录,可选择“数量”,然后在“部分值”框中输入 10。

本例中不需限制操作。(5)完成在该步中按“完成”按钮,即可完成查询向导的创建,生成所需查询。

交叉表向导交叉表查询显示来源于表中某个字段的总结值(合计、计算以及平均值

等),并将它们分组放置在查询表中,一组列在数据表的左侧,一组列在数据表的上部。

“交叉表向导”创建查询的步骤,针对“每个学生的课程选修成绩汇总”的问题展开说明如下:

(1)字段选取只要选定三个字段,并且三个字段只能来自于同一个表或同个视图。本

例中选择成绩表。(2)定义布局确定查询所得交叉表中的行、列与数据。分别进行拖动即可。

Page 69: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

本例中以 XH 为行,即一行表达一个学生的信息;以 KCDH 为列,不同的 KCDH将组织到交叉表的标题行上;以 CJ 为数据,对于拖动到“数据”框中的字段,它的每个单独的值,

交叉表查询结果都将显示为一列。(3)加入总结信息通过从“总结”和“小计”区域选择合适的单选按钮,可以添加一个包

含总结信息和小计的列。总和将出现在交叉表查询结果中的最右列内。总结信息的默认值为“求和”,本例中不作修改。在查询结果中将得到

每个学生各门课程的成绩总和。

Page 70: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

(4)完成因为不是每个同学都修学一样的课程,交叉表中的数据将不会填满表格。

如果不希望没有具体数据的那些格中出现“NULL”,那在“显示 NULL

值”前的复选框中去掉默认的选定。在本例中去掉了“显示 NULL 值”前的选定。

通过以上操作,创建的交叉表查询如图所示。

Page 71: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

利用查询设计器创建查询进入查询设计器

可以通过如下两种途径来启动“查询设计器”: 项目管理器窗口,“数据”选项卡“查询”“新建” 命令窗口,CREATE QUERY 命令

Page 72: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

如果明确查询所需要的表和视图,可以通过“添加表或视图”的对话框,将它们添加到查询的数据环境中。

说明:推荐项目管理器的方法(查询文件会自动列在项目管理器中,便于使用与管理)认识“查询设计器”窗口

“数据环境”窗口查询窗口有上下两部分组成,上一半是“数据环境”窗口,在其中置放了查询的

数据源:表与视图,以及相互之间的关系。如“查询统计各系学生人数”的问题需要在数据环境窗口中加入 XI 表和 XS 表。

选项卡

选项卡 作用字段 用于确定查询要输出的字段或表达式联接 指联接表达式,用它来匹配多张表或视图中的记录。当多张

表之间创建了永久性关系之后,此选项卡联接条件默认筛选 用来确定查询满足的条件排序依据 用于指定查询结果的记录输出顺序分组依据 用于数据统计,生成分组查询结果杂项 指定是否要对重复记录进行检索,同时是否对返回记录的最

大值或最大百分比做限制。一般情况下为默认

Page 73: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

查询设计过程以查询学生修学课程的成绩为例展开说明 数据环境设置——选取查询所依据的表或视图 选取字段与表达式——从表或视图中选择查询显示的字段,或组织需要的表

达式 联接条件

筛选条件

比较运算符 说明= 等于Like 字段与给出的实例文本匹配,如 gh Like A== 完全匹配(专指字符)>(>=) 大于(大于等于)<(<=) 小于(小于等于)Is NULL 字段包含NULL 值

Page 74: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Between 字段值在某一区间内,区间内的低值与高值以逗号隔开

In 字段必须与实例文本中用逗号隔开的多个样本中的一个相匹配

设定排序方式——查询中的记录据“排序依据”排序 设定分组方式

分组的目的:用于实现数据统计分组的实现:1、根据任务选择合适的分组字段(按什么进行统计) 

2、组织合适的统计表达式名称 语 法 说 明 均值 AVG(〈字段名〉) 求一列数据的平均值 计数 COUNT(〈字段名〉) 计算在一列中〈选项〉的个数

COUNT(*) 输出查询输出的行数 最小 MIN(〈字段名〉) 给出该列中的最小值 最大 MAX(〈字段名〉) 给出该列中的最大值 求和 SUM(〈字段名〉) 给出一列数据的求和值

查询去向 默认的查询去向是浏览窗口。

可设置的查询去向还有:临时表、表、图形、屏幕、报表、标签

查询设计练习

Page 75: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

简单查询练习练习:1.查询显示每个班级的学生情况 4.查询每个系的班级情况5.查询每门课程不及格的学生名单

统计查询练习练习:1.查询统计各系学生人数2.查询统计每个学生修学课程门数3.查询统计各系的班级总数 4.查询显示每门课程学生的选修情况(课程代号、课程名、选修人数、最高分、最低分、平均成绩)5.查询统计每个学生的修学课程数和总分7.查询所有成绩总分在 250 分以上,并且各门课程的成绩不低于 70 分的学生。(要求:学号、姓名、总分、平均分和最低分,并按总分从高到低排序)

第十讲 SELECT-SQL 语句 主要内容

由查询文件认识 SELECT-SQL 语句SELECT-SQL 语句基本语法用 SELECT-SQL 进行数据查询练习用 SELECT-SQL生成临时表和表

从查询文件中认识 SELECT-SQL 语句 查询文件的运行 方法一:在项目管理器中选定查询→ “运行” 方法二:DO <查询文件名> | ? (须带上扩展名)察看查询文件 命令:TYPE <文件名.pqr>

在每个查询文件中包含的都是一条 SELECT-SQL语句。查询文件可以说是程序文

Page 76: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

件。运行查询的本质是执行程序中唯一的 SELECT-SQL语句。因此“查询是动态的”。练习:创建如下查询,并查看查询文件(1)每个学生的课程选修情况的查询(2)查询统计各班的学生人数(3)查询班号为“020111”的所有学生信息(4)查询显示各门课程的修学名单和成绩(5)查询总分在 220 分以上,单科成绩不低于 60 分的学生(6)查询总分最高的三名学生(要求:学号、姓名、性别、总分,并按总分从高到低排序)

(1)每个学生的课程选修情况的查询SELECT xs.Xh,xs.Xm,cj.Kcdh,kc.Kcm,kc.Bxk,cj.Cj; FROM xssj!kc INNER JOIN xssj!cj INNER JOIN xssj!xs; ON cj.Xh = xs.Xh ON kc.kcdh = cj.kcdh; ORDER BY XS.Xh,CJ.Kcdh

(2)查询统计各班的学生人数SELECT Bj.bjdh, Bj.bjmc, count(xs.xh); FROM xssj!xs INNER JOIN xssj!bj ; ON Xs.bjdh = Bj.bjdh; GROUP BY Bj.bjdh

(3)查询班号为“020111”的所有学生信息SELECT Xs.xh, Xs.xm, Xs.xb, Xs.csrq, Xs.dhhm; FROM xssj!xs INNER JOIN xssj!bj ; ON Xs.bjdh = Bj.bjdh; WHERE Xs.bjdh = '020111'; ORDER BY Xs.xh

(4)查询显示各门课程的修学名单和成绩SELECT Kc.kcdh, Kc.kcm, Xs.xh, Xs.xm, Cj.cj; FROM xssj!kc INNER JOIN xssj!cj INNER JOIN xssj!xs ; ON Xs.xh = Cj.xh ON Kc.kcdh = Cj.kcdh; ORDER BY Kc.kcdh, Xs.xh

(5)查询总分在 220 分以上,单科成绩不低于 60 分的学生SELECT Xs.xh, Xs.xm, SUM(Cj.cj) AS 总分, AVG(Cj.cj) AS 平均

分,;

Page 77: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

MIN(Cj.cj) AS 最低分; FROM xssj!xs INNER JOIN xssj!cj ; ON Xs.xh = Cj.xh;GROUP BY Xs.xh;

HAVING 总分 >= 220 AND 最低分 > 70; ORDER BY 3 DESC

(6)查询总分最高的三名学生SELECT TOP 3 Xs.xh, Xs.xm, SUM(Cj.cj) AS 总分, AVG(Cj.cj) AS

平均分,;

MIN(Cj.cj) AS 最低分; FROM xssj!xs INNER JOIN xssj!cj ; ON Xs.xh = Cj.xh; GROUP BY Xs.xh; ORDER BY 3 DESC

SELECT-SQL 语句

通过示例解读SELECT-SQL 语句对以上六例 SELECT-SQL语句,配合查询任务作分析,大体上可以得

出如下结论:SELECT 后的项确定了查询输出结果中的项目FROM 后的内容表达了数据的来源ON 后的项指定表与表之间的联接原则WHERE引出了筛选条件,将限制查询结果中的记录ORDER BY 后的项确定了输出结果的排序方式

Page 78: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

GROUP BY 后,指定了统计方式。HAVING 对统计后的输出结果,实施了进一步的数据挑选。

SELECT-SQL 语句基本语法SELECT-SQL 语句基本格式 SELECT [ALL | DISTINCT] <输出项列表>|* [TOP n ]; FROM [库名!]表名 [<联接方式>[库名!]表名];

[<联接方式>[库名!]表名]…ON <联接条件>…]; [WHERE <筛选条件>] ;

[ORDER BY <排序依据>];[GROUP BY <分组依据> [ASC | DESC]][HAVING <条件>]

SELECT-SQL 语句分析定义数据源:由 FROM子句实现单表时:FROM [数据库名!] 表名多表时:FROM [数据库名!]表名 [<联接方式>[数据库名!]表名] …

ON <联接条件> … ]

联接方式 说明INNER JOIN 表与表之间内部联接LEFT [OUTER] JOIN 左联接RIGHT [OUTER]

JOIN 右联接FULL [OUTER] 完全联接

定义结果:指定输出字段、筛选条件、记录排序、记录分组、筛选结果、

Page 79: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

输出类型等。指定输出字段:SELECT 子句。子句形式:SELECT [ALL | DISTINCT] [TOP n ]<输出项列表>|*

参数 说明ALL|

DISTINCT ALL 指 所 有 记 录 ( 默认),DISTINCT限制输出结果无重复记录

TOP n 限制查询输出结果,取最前面的 n条记录

<输出项列表>|*

输出项列表可以是字段、函数和表达式。可在各项后附带“AS 标题”,指定标题

*:指数据源表中的所有字段

筛选条件:WHERE子句如图:SELE * FROM KC WHERE "数"$KCM。

Page 80: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

记录排序:ORDER BY <排序依据>[ASC | DESC]

记录分组:GROUP BY <分组依据>

筛选结果:HAVING <条件>

HAVING 语句通常跟在 GROUP BY语句之后,作分组后的进一步数据选取。SELECT-SQL 语句示例

1.查询显示学生表中所有男学生情况。分析:数据源是 XS 表,输出结果是所有字段,按性别是男进行筛选。

2.显示学生表中所有 02级的女学生信息。分析:数据源是 XS 表,输出结果是所有字段,按学号“02”开头且性

别是女进行筛选。

3.从高到低显示成绩表中的课程代号为“05”的学生的学号和成绩。分析:数据源是 CJ 表,输出结果是 XH 和 CJ,按 KCDH 是“05”筛选,

并按成绩排序。

Page 81: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

4.显示课程表中理论学时超过 40 的课程代号、课程名称和理论学时,并把标题换成自定义的形式。

分析:数据源是 KC 表,输出结果是 KCDH、KCM、LLXS。

5.列出各系的班级情况。要求输出系名、班级名称。并按系名排序。分析:数据源是 XI 表和 XS 表。输出结果是 XIMING、BJMC。按

XIMING 排序。

6.查询显示各门课程的修学人数、最高分、最低分和平均分。分析:数据源是 KC 表和 CJ 表。因为是一个统计的问题,需要设定按

KCDH 分 组 。 输 出 结 果 是KCDH、KCM、COUNT(CJ.KCDH)、MAX(CJ.CJ)、MIN(CJ.CJ)、AVG(CJ.CJ)。

说明:1.不要求预先打开源表;2.语句执行时自动打开源表,执行完毕源表仍保持打开状态。

试执行如下命令:close database allselect xm as 姓名,count(cj.xh) as 门数 ; from xs inner join cj ; on xs.xh=cj.xh group by xs.xhselect xs?select()select cj?select()

Page 82: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

3.以下两个 SELECT-SQL语句等价select xm as 姓名,count(cj.xh) as 门数 ; from xs inner join cj ; on xs.xh=cj.xh group by xs.xh

select xm as 姓名,count(cj.xh) as 门数; from xs, cj ;

where xs.xh=cj.xh group by xs.xh请认真辨别二者的格式差异

用 SELECT-SQL 语句进行联合查询联合查询是指一个查询需要另一个查询作为辅助例:输出“李林”所在班级的学生情况。分析:该查询问题中包含了两个查询部分:

查询“李林”所在的班级代号 查询与“李林”同班的学生情况

SELECT * FROM xs WHERE xs.bjdh=(select xs.bjdh FROM xs;

WHERE xs.xm="李林")

练习:查询学号为“02011101”的学生课程代号为”01”的课程成绩,显示高于该成绩的的其它学生的”01”课程成绩情况。用 SELECT-SQL 进行数据查询练习 单表数据查询和统计练习

练习1.以学号为序显示学生表的全部记录;2.查询显示学生表中年龄最小的两名学生记录;3.查询统计每门课程的学时总数

说明:初练时可以通过查询设计器,来理解 SELECT-SQL语句。

Page 83: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

多表数据查询和统计练习练习

1.询统计各系班级个数;2.查询显示各系学生的人数和平均年龄。3.查询统计每个学生的修学课程数和总分;4.显示总分最高的学生的学号、姓名和总分;5.查询显示总分最高的五名学生名单(要求:学号、姓名、性

别、总分,并按总分从高到低排序);用 SELECT-SQL 生成临时表和表 用 SELECT-SQL生成临时表

语句格式:SELECT ……… INTO CURSOR < 临时表名 >

用 SELECT-SQL生成临时表语句格式:SELECT ……… INTO TABLE < 表名 >

用 SELECT-SQL生成文本文件语句格式:SELECT ……… TO FILE < 文件名 >

用 SELECT-SQL直接打印输出语句格式:SELECT ……… TO PRINTER

用 SELECT-SQL 输出至屏幕语句格式:SELECT ……… TO SCREEN

第十一讲 视图设计主要内容

视图的认识视图设计器创建视图参数化视图的创建与使用

Page 84: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

CREATE SQL VIEW 创 建视图

视图的认识视图是什么

视图的定义视图和查询相比,兼具表和查询的特点。视图可从一张或多张表中检索或统计出

所需数据,返回特定的记录或字段。这些记录可更改并可将更新的数据发送回源表。视图不会改变表的结构,不会生成一个新的检索表,视图相当于一个定制的虚拟

表,其本质是一条 SQL命令。视图示例(浏览)

视图的作用 视图的浏览可以用来对表、视图中的数据进行查询显示(同查询) 视图中的数据是可以更新的,并且可将更新发送回源表(区别于查询,查询

数据是只读的) 视图可为进一步的设计准备数据源。这进一步的设计包括:视图设计、查询设

计、表单设计和报表设计。(查询不具备)视图的存储和种类

视图的存储 视图容放在数据库中。所以视图须在数据库打开的状态下创建与使用。 视图的种类

本地视图:使用当前数据库中表、视图作为数据源的视图。远程视图:使用当前数据库之外的数据源,例如 SQL Server。

Page 85: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

视图与查询的区别它们的共同之处是都可实现数据查询、检索,区别有如下几点: 视图中的检索数据可以更新,而查询中的数据只读; 视图数据的更新可以影响源表,而查询对源表无影响。 视图不是以文件的形式存在,是放置在数据库中。而查询以查询文件的形式保存

视图设计器创建视图认识视图设计器

进入视图设计器的方法: 1.在项目管理器中新建视图 2.命令窗口CREATE VIEW [<视图名>|?]须注意 CREATE VIEW命令应在数据库打开状态下执行。

视图设计过程

以查询学生修学课程的成绩为例展开说明 数据环境设置——选取查询所依据的表或视图

新增!

Page 86: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

以示例来说,在数据环境中置入三个表:XS、KC、CJ,图例如下:

选取字段与表达式——从表或视图中选择查询显示的字段,或组织需要的表达式

对于本例,选取如下图:

联接条件即数据环境中表之间的关系连线,本例如下图:

筛选条件对所有数据进行查询,所以本例不作筛选 设定排序方式——查询中的记录据“排序依据”排序 设定分组方式

新增!

Page 87: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

分组的目的:用于实现数据统计分组的实现:1、根据任务选择合适的分组字段

2、组织合适的统计表达式 更新条件

示例按上图设置,成绩可以修改,并发送回源表对于 CJ 表可以直接察看到数据的变化而对于 KC 表,需关闭表后重新打开才能观察到数据的更新变化 杂项

视图的标题及由视图实现统计视图标题的修改(通过“属性”按钮)

更新方式

选择才可向源表发送更新否?

可更新字段

Page 88: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

视图浏览、修改、删除项目管理器(选择视图名‘浏览’、 ‘修改’ 、移去’)视图浏览即实现了多表数据查询。

视图修改即进入视图设计器载入指定视图供用户修改。视图移去即删除数据库中的视图。通过视图实现数据汇总、统计类同查询实现统计要点仍是两点: 分组依据中说明统计类别(按什么进行统计) 

Page 89: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

构造统计表达式相关函数:AVG(nExpression)——求平均值COUNT( )——计数SUM(nExpression)——求和MAX(nExpression)MIN(nExpression)

视图的创建练习创建视图练习一

1.创建一个视图,可用于检索各系各班的学生情况2.创建一个视图,可用于检索每门课程的学生修学情况(允许成绩数据的修改);

3.创建一个检索每班学生修学情况的视图。 说明:同时基于四个或四个以上表时,可分步进行创建。

创建视图练习二1.创建视图,检索统计各班学生人数; 2.创建一个统计每个学生的总成绩的视图3.创建一个统计各系学生的平均年龄的视图4.创建一个视图,用于统计每门课程的选修人数、最高分、最低分、平均分

问题:1.输入一个系名,查询显示该系的学生情况;2.输入一个学生姓名,查询显示该生的选学课程的成绩情况;3.输入一课程名,查询显示该课程的学生选修情况;

参数化视图的创建与使用由视图设计器创建参数化视图

以问题 3着手说明参数化视图创建步骤:打开视图设计器,定义视图的数据源。

本例中需要加入 KC 表、CJ 表和 XS 表。 通过各选项卡,进行视图结果的定义(即正常的视图设计

Page 90: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

过程) 设置视图参数

选系统菜单上的“查询”→ “视图参数”弹出视图参数对话框,如图:

在视图参数对话框中设置参数变量名及其类型。本例设置如上图。 在视图设计器的“筛选”选项卡组织条件:KC.KCM=?课

程名称注意,在此条件中用? 参数变量名 的方式调用参数变量。

运行视图,保存

Page 91: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

使用参数化视图提供实际数据视图运行时首先要为视图的参数提供实际的数据,如图:

运行结果在上图的对话框中,按“确定”即可得到。

练习:1.输入一个学号,浏览显示该学号同学的课程成绩情况2.输入一个课程代号,显示该课程的课程名、最高分、最低分、平均分、修学

人数。用 CREATE SQL VIEW 命令创建视图 命令格式 命令:CREATE SQL VIEW [<视图名>|?] AS <SELECT-SQL 命令>

示例:OPEN DATABASE JXSJCREATE SQL VIEW XSCJ AS SELECT XS.XH,XM,KCDH,CJ ; FROM XS INNER JOIN CJ ON XS.XH=CJ.XH USE XSCJBROW

第十二讲 VFP 程序设计(一)主要内容

VFP编程概述VFP 的程序控制程序文件的基本操作方法

Page 92: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

程序中常用的命令和函数分支结构的程序设计

VFP 编程概述 编程的意义利用目前具有的知识我们已经可以解决一些简单的数据处理问题了。具体的处理

需要在 VFP 平台上进行。事实上使用 VFP 进行数据处理有以下两种方式: 用户直接在 VFP 平台上进行数据处理 开发一个应用软件,用户操作应用软件处理数据

若要开发基于 VFP 平台的应用软件,必须经过程序设计这个过程二种编程模式

面向对象编程:是 Visual FoxPro 新增的特色;面向过程编程:传统的编程方法。

面向对象编程一种系统化的程序设计方法。以对象为中心,将对象与其属性、事件、

方法封装在一起。

Page 93: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

如上图示例,分别为四个命令按钮设计了程序——Click 事件代码。程序特点:1)服务于对象; 2)每个程序均由事件驱动,可能执行也可能不执行; 3)程序与对象封装在一起,不单独存成程序文件。

面向过程编程独立的编程解题方式。如求解 1 + 2 + 3 + …… + 100无须考虑对象,而面向问题本身,可设计一个程序文件,通过程序执行得到结果。程序特点:1)程序与对象无关; 2)程序存成独立的程序文件; 3)用特定的命令运行程序文件以得到问题的结果。

VFP 程序的三种基本结构

VFP 的程序由三种基本结构构成:顺序、条件分支、循环。

Page 94: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

顺序顺序结构由语句行组成,程序执行时,按程序中的语句顺序执行。示例:

*Our First Program ExampleSET TALK OFFUSE xsSET FILTER TO bjdh='020111'LIST

? &&空行?SET FILTER TO bjdh='010111'LISTUSE

条件分支根据条件决定程序执行流向,可实现分支结构的两条语句:

IF … ELSE … ENDIF DO CASE … ENDCASE

循环结构对一段语句进行有限次重复执行。可实现循环结构的三条语句:

SCAN … ENDSCAN DO WHILE … ENDDO

FOR … ENDFOR 程序文件的基本操作方法

程序构成规则

Page 95: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

1)程序由若干命令组成;2)每条命令均可由 VFP 识别并执行;3)可在程序中加入注释信息。 整行注释:* <注释信息>

尾注释: && <注释信息>

程序的基本操作程序的创建 命令窗口中:MODIFY COMMAND <应用程序名>

在项目管理器:代码选项卡程序“新建”

程序的编辑 命令窗口中:MODIFY COMMAND <应用程序名>

在项目管理器:代码选项卡程序选取具体程序名“新建”

程序的运行 命令窗口:DO <应用程序名>

在项目管理器:代码选项卡程序选取具体程序名“运行”程序中常用的命令和函数

常用命令

Page 96: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

输入输出命令?与??

语法:? | ?? <表达式 1>

功能:输出表达式的值。说明:?----换行输出 ??----在本行后续输出

WAIT 命令语法:WAIT [<提示信息>] [TO <变量>] [WINDOW [AT <行>,<

列>]]

功能:显示信息,暂停程序的执行,直到用户按下任一键或单击鼠标。说明:1)若带 TO <变量>,变量将接收一个单字符(键入字符),如按下

的是回车、不可打印的字符或单击鼠标,则变量将为一空字符。2)WINDOW [AT <行>,<列>]——提示信息在一窗口中显示;

问题:修改上面的例程,在打印完“计算机工程系”的职工记录后暂停,并给以提示。

常用函数

Page 97: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

MESSAGEBOX 函数语法:MESSAGEBOX(<提示信息>, [,<对话框类型> [,<标题>]])

功能:显示一个用户自定义的对话框。说明:对话框类型应为图标类型+默认按钮+对话框按钮类型: 图标类型 : 16 Stop 图标; 32 问题(?)标记; 48 感叹(!)标记; 64 信息(i)标记。 默认按钮: 0 第一个按钮; 256 第二个按钮; 512 第三个按钮。 对话框按钮类型: 0 确定按钮. 1

1 确定与取消按钮. 1,2

2 终止、重试与 忽略按钮. 3,4,5

3 是、否与 取消按钮. 6,7,2

Page 98: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

4 是与否按钮. 6,7

5 重试与取消按钮.

使用:可以通过<变量>=messagebox(..)或 =messagebox(..)的方式调用函数;此时,变量将取得函数返回值(N 型)

示例:=messagebox

('操作错误 ' ,16, '提示窗口')

x=messagebo

x(' 操 作 错误',32+2,'提示窗口')

自行掌握其它常用函数的使用分支结构的程序设计分支判断结构

单分支结构语法:IF <条件> <命令组 1> [ELSE <命令组 2>] ENDIF功能:根据条件决定程序流向。说明:

Page 99: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

1、条件为一逻辑表达式,其值为真时条件成立。 2、在使用时 IF、ELSE、ENDIF均独占一行,相互匹配;在命令组中可嵌套控制

结构(分支、循环)例 1:在如图所示的表单窗口中输入课程代号,按“查询”按钮即可查询该门课

程的基本信息。如果课程表中无此课程,则显示如下提示窗口。:

要求:为如下表单的查询按钮设计事件代码。

LOCATE for thisform.text1.value=kcdhIF eof()

MESSAGEBOX("查无该课程,请检查课程名输入是否有误",48,"请核查")ELSE

thisform.refreshENDIF

例 2:试编程判断今年是否为闰年。分析:通过 DATE()函数可以求得今天的日期,再由 YEAR()函数求取今年的年份。

Page 100: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

如果该年份是 400 的倍数,则为闰年;否则如果是 100 的倍数,一定不是闰年;再否则如果是 4 的倍数,则该年又是闰年。

SET TALK OFFY=YEAR(DATE()) &&求取今天所属年份F=0 &&标志变量,如果是闰年,其值为 1IF MOD(Y,400)=0

F=1 &&是 400 的倍数,则为闰年ELSE

IF MOD(Y,100)=0F=0 &&是 100 的倍数,一定不是闰年

ELSEIF MOD(Y,4)=0

F=1 &&是 4 的倍数,是闰年ENDIF

ENDIFENDIF?"Today's date is ",DATE()IF F=1

?"It's a leap year."ELSE

?"It's not a leap year."ENDIF

IIF函数介绍:语法:IIF(<条件>,<表达式 1>,<表达式 2>)功能:条件成立,函数返回表达式 1;条件不成立,函数返回表达式 2。程序的修饰:为了便于阅读源程序,可在程序编辑窗口中对程序进行修饰。多重判断结构语法:DO CASE CASE <条件 1> <命令组 1>

Page 101: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

[CASE <条件 2> <命令组 2> ... CASE <条件 N> <命令组 N>] [OTHERWISE <命令组>] ENDCASE流程分析:(可替代 IF-ENDIF)说明:①只选一个命令组执行(尽管多个条件成立) ②无OTHERWISE 时,可能不执行任一命令组 ③使用时注意相互匹配,在命令组中可嵌套控制结构(分支、循环)例 1:根据当前日期求取当前处于第几季度(由 MONTH函数可求得一个日期所

在月份)例 2:有一职工表,其中有字段:工号、姓名、性别、出生日期、工龄、工资。现有调

资方案如下:工资少 950元的一律先调至 950元,工龄 20年以上调资 30%,10年以上调资 20%,5年以上调资 10%。如图所示表单就是一个调资前的咨询表单,试为该表单上的列表框设计事件代码。

分析:当从列表框中选择一个职工姓名后,表单右下侧的文本框(text1)中将显示调资后的工资。所以应该为列表框对象设计交互变化时的事件代码。

代码的编写分成四个阶段: 取原工资 最低保证线查验 按工龄调整工资 将调整的工资值置于 text1 中。

Page 102: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

s=gzIF s<950

s=950ENDIFDO CASECASE gl>=20

s=s*1.3CASE gl>=10

s=s*1.2CASE gl>=5

s=s*1.1ENDCASEthisform.text1.value=s thisform.refresh

第十三讲 VFP 程序设计(二)主要内容

循环结构程序设计练习过程和自定义函数变量的作用域

循环结构在 VFP 中有三种循环语句:SCAN … ENDSCAN——————遍历表记录循环FOR … ENDFOR———————计数循环DO WHILE … ENDDO—————条件循环SCAN … ENDSCAN

语法和功能功能:从头到尾遍历当前表中的记录

Page 103: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

语法:SCAN [NOOPTIMIZE] [范围] [FOR <条件>]

〈命令组〉 ENDSCAN

示例练习例 1.给学生表中的每位学生,打印输出一份如下样式的成绩表

---------------------------------------李林同学,你的各科成绩如下: KCDH CJ 05 65.0 01 85.0 07 65.0---------------------------------------

分析:需要对学生表中的所有记录进行遍历处理:通过每个学生的学号,去成绩表中提取相关的成绩数据。[程序]

SET TALK OFFset printer to studentSET PRINT ON CLOSE DATA ALLUSE xsSELECT 0 USE cjSELECT xs SCAN

?'---------------------------------------'?ALLTRIM(xm)+'同学,你的各科成绩如下:'x=xh SELECT cjDISPLAY kcdh,cj ALL FOR x=xh OFF??'---------------------------------------'?

Page 104: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

ENDSCANSET PRINT OFFset print toCLOSE DATABASE

介绍一些基本设置SET PRINT ON|OFF

SET PRINTER TO <文本文件>

例 2.如图所示的表单可用以进行各门课程的成绩汇总,选择列表框中的一门成绩,右边的两个文本框中分别显示该门课程的平均分和不及格人数。试为列表框编制合适的事件代码。

分析:涉及 KC 表和 CJ 表,当选取列表框中的一门课程时,首先要记下该课程的课程代号,后从成绩表中对该课程代号相关的记录、以及成绩数据进行汇总。

代码的编写分成三个阶段: 取课程代号 遍历相关记录进行操作处理 将处理结果写到文本框中。FOR … ENDFOR

Page 105: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

语法和功能功能:计数循环语法:FOR <变量> = <初值> TO <终值> [STEP <步长>]

〈命令组〉 ENDFOR

适用:指定次数的循环说明:可以用 FOR循环替代 SCAN-ENDSCAN

FOR XX=1 TO RECC()

GO XX... ENDFOR

SCAN...ENDSCAN

示例练习例 3:求 1+2+3+……+100SET TALK OFFS=0FOR I=1 TO 100 S=S+IENDFOR?SRETURN

S:累加器I:循环变量亦为加数

Page 106: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

扩展:由如下样式表单完成累加运算,请写出命令按钮的事件代码。

练习求 1+3+5+……+99

求 12+22+32+……+992

例 4:用 FOR-ENDFOR 解决上面例 2

DO WHILE … ENDDO语法和功能功能:条件循环语法:DO WHILE 〈条件〉 〈命令组〉 ENDDO适用:由条件所确定的循环说明:用 DO WHILE循环替代 SCAN-ENDSCAN 和 FOR-ENDFOR 的方式:

USE <表>SCAN...ENDSCAN

USE <表>DO WHILE NOT EOF()...SKIP

Page 107: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

ENDDOFOR X=X1 TO X2 STEP N...ENDFOR

X=X1DO WHILE X<=X2...ENDDO

示例练习例 5:试用 DO WHILE-ENDDO 求 1+2+3+...+100要求:用面向过程与面向对象两种编程方案来解决

循环控制循环的次数通常由循环的方式确定,但在循环体中可加入 EXIT 和 LOOP命令对循

环进行另一种方式的控制。EXIT循环终止。流程转到循环终止语句(ENDSCAN、ENDFOR、ENDDO)后的语句;LOOP循环短路,流程转到循环起始。对 SCAN、FOR循环而言,转到循环命令组中的第一个语句;对 DO WHILE而言,转到 DO WHILE语句。注意:在对 SCAN循环的命令组中若使用 SKIP命令,将不能遍历指定的记录;

在 FOR循环中或改变循环变量的值,循环次数也会改变。示例练习分析程序运行结果、循环次数

SET TALK OFFCLEARA=1DO WHILE .T. A=A+A IF A>=10 EXIT ENDIFENDDO?ARETURN

Page 108: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

分析:循环次数 a 的值 a>10?0 11 2 .F.2 4 .F.3 8 .F.

4 16 .T. ―→循环出口!!!结论:程序运行时循环次数为 4,运行结果为 16。

程序设计练习查询统计学生成绩概况查询统计学生的修学课程门数、不及格课程门数和总分(要求为如下表

单的列表框的交互变化事件设计代码)

循环控制练习求 1+2+...+N<1000 的 N 的最大值(用 FOR-ENDFOR、DO WHILE两种方法)要求:先用单独的程序文件解决

Page 109: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

再用如下示例表单解决,编写事件代码。

阅读和分析程序,问程序的循环次数和运行结果。SET TALK OFFa=29s=0DO WHILE a>0

a=a-3IF mod(a,2)=0

LOOPENDIFs=s+aIF s>40

EXITENDIF

ENDDO?a,s

过程和自定义函数过程和函数概述 作用

过程和函数将常用代码集中在一起,供应用程序在需要时调用;设计用户自己所需的函数。以这样二种方式提高程序代码的可读性和维护性。 说明

Page 110: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

1.在 VFP 中过程和自定义函数本质上是完全一致的。2.习惯上,过程是为了完成某个操作而编写的代码,函数用来计算并返回一个

值。 过程和函数的声明

声明格式通用,但在习惯上沿用以前的声明语法过程的声明语法:PROCEDURE <过程名> [Parameters<参数表>] <命令组> [RETURN [eExpression ]]ENDPROC

自定义函数的声明语法:FUNCTION <函数名> &&函数名 [Parameters<参数表>] <命令组> [RETURN [eExpression ]] &&函数值 ENDFUNC

接收参数语句语法: PARAMETERS <参数表>功能:接收较高一级程序传递过来的数据说明:1)必须是紧接 PROCDURE 或 FUNCTION 的第一个语句 2)参数个数、类型与较高一级程序中的调用传递参数匹配 3)接收变量可按顺序直接列于过程名或函数名后的小括弧中,这样可省去接

收参数语句。返回语句语法:RETURN [eExpression | TO MASTER ]功能:返回到被调用的程序、主程序(最高一级程序)或命令窗口。说明:1)RETURN 在应用程序中通常作为最后一条语句,在过程和函数中常是紧接

ENDPROC 或 ENDFUNC 的最后一个语句。2)在自定义函数中,常见 RETURN eExpression 的返回形式,表达式的值即为

函数的返回值。若RETURN 后无表达式时,返回值默认为.T.。过程和函数的保存两种保存方式:1)放在过程文件中。

将过程和函数综合到一个程序文件中,这个程序文件称为过程文件。它可供多个应用程序使用。在应用程序(主程序)中常规操作:

SET PROCEDURE TO <过程文件名> 在调用过程和函数之前,打开过程文件。SET PROCEDURE TO(或 RELEASE PROCEDURE):

Page 111: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

在调用完毕,释放过程文件。2)放在一般程序的结尾这样的过程和函数一般只供本程序使用。

过程和函数的执行二种执行方式使用 DO命令调用——以完成一个操作;以函数方式调用——着重于一个返回结果。示例(SAMPLE1.PRG、SAMPLE2.PRG)

SET TALK OFFS=0FOR M=1 TO 20T=1DO fac WITH M,TS=S+TENDFOR?SRETURN

PROCEDURE facPARA M,YFOR K=1 TO MY=Y*KENDFORENDPROC

SET TALK OFFS=0FOR M=1 TO 20S=S + fac(m)ENDFOR?SRETURN

FUNCTION facPARA My=1FOR K=1 TO MY=Y*KENDFORReturn yENDFUNC

试分析和理解以上例程。变量的作用域

程序中未说明而引用的变量的作用情况:1)当程序运行结束,变量自动释放;2)当该程序调用过程或函数时,变量可在过程(函数)中作用;3)在被调用程序中引用的变量,在返回主程序后,变量被自动释放,不可再引

Page 112: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

用。示例分析(AREA.PRG):SET TALK OFFCLEARINPUT 'Width:' TO wINPUT 'Height:' TO hzc=0DO area?zcRETU

PROC areaP = h * wZc = pENDPROC思考:1)在程序中若无 zc=0,程序运行情况会怎样? 2)在程序中若将?zc改换成?zc,p会怎样?在 VFP 中,可以对变量进行声明,以确定变量的作用域。可声明三种类型的变量 :

公共变量、局部变量和区域变量。公共变量(全局变量)语法:PUBLIC <内存变量表> 功能:建立公共变量。公共变量可贯穿于所有的程序,在程序运行完毕后变量依然存在。说明:1)应在变量建立、使用之前声明; 2)可放在过程和函数的定义中; 3)在命令窗口中建立的变量,自动宣告为公共变量。思考:改写示例 AREA.PRG,使程序可省去 zc=0?

局部变量语法:PRIVATE <内存变量表> PRIVATE [ALL [LIKE/EXCEPT <框架>功能:建立局部变量。局部变量的作用类未说明的变量,它的特点是可“隐蔽”上一级同名内存变量。

Page 113: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

思考:示例 AREA.PRG 中,若在过程 AREA 中首行添语句 private zc,会有怎样的运行结果?

分析程序的运行结果:SET TALK OFFval1 = 10val2 = 15DO down? val1, val2 PROCEDURE downPRIVATE val1Val1 = 50Val2 = 100? val1, val2 ENDPROC

区域变量语法:LOCAL <内存变量表> 功能:建立区域变量。区域变量是一种作用区域最为严谨的变量,它们只能在建立它们的程序(过程、函

数)中使用。

第十四讲 面向对象入门(一)主要内容

对象及其属性、事件、方法表单向导设计表单表单设计练习

对象以及对象的属性、事件、方法对象

对象(object)——对象是一个具有属性(数据)和方法(行为方式)的实体。例如,表单上的命令按钮是对象,表单本身也是对象。一个对象建立以后,其操

Page 114: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

作就通过与该对象有关的属性、事件和方法程序来描述。用控件创建对象控件——Control,是指 VFP所提供的设计表单界面的“一组零件”,是界面组件

的统称。控件有两类: VFP 系统提供的可视控件 用户自行建立的新控件。

问题:列表框为什么能显示图像文件名呢?为什么选择一个文件名会显示相应的图像呢?选项按钮为什么可以即刻设定方式呢?答案:对象恰当地设置了属性和方法,外界便得以与对象交流。通过程序对象之

间相对独立又可彼此联系。对象的属性

属性对象的特征或某一方面的形为。不同类的对象有一些共同的属性,也有各类特有的属性。在 VFP 中,对象的属性由对象所隶属的类决定。例如命令按钮对象隶属于命令控

件类,文本框对象隶属与文本框控件类。表单的常用属性

属性名 意义

Page 115: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Name 表单对象的名称Backcolor 表单的背景颜色ControlBox 表单有无控制框(默认为.T.)Caption 表单标题Closable 关闭按钮是否可用(默认为.T.)MaxButton 最大化按钮是否可用(默认为.T.)MinButton 最小化按钮是否可用(默认为.T.)Autocenter 表单是否自动位于中心否AlwaysTop 表单总是在最前面(默认为.F.)Visible 表单显示与否(默认为.T.)Top 表单上边与主窗口上边的距离Left 表单上边与主窗口左边的距离Height 表单的高度Width 表单的宽度

对象的事件事件事件是一种预先定义好的特定动作,由用户或系统激活。在大多情况下,事件是

通过用户的交互操作而产生并被对象所识别的。所以,在 VFP 中有两类事件 用户事件——来自于用户的动作 系统事件——系统时钟的进程等不能为一个对象创建新事件事件代码

事件可以具有与之相关联的方法程序(常称为事件代码)。可以编写相应的代码对此动作进行响应。

表单的常用事件事件名 发生时机

Activate 当表单变成活动表单时激发Click 在单击表单时发生

Page 116: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Error 当调用一个方法出错时将激发Init 当创建一个表单时激发RightClick 当在表单中右击鼠标时发生Load 当将表单装载到内存时将激发

对象的方法对象的方法对象能够执行的一组预定的程序代码,以完成特定的任务表单的常用方法

方法名 意义Refresh 刷新表单Release 释放表单Hide 隐藏表单Show 显示表单

由表单向导设计表单表单概述

表单的作用数据处理的用户界面(数据输入、数据查询、数据统计与维护等等)设计一个应用系统,主要的工作就是完成系统各个功能的表单的设计。表单文件扩展名——.SCX (表单备注文件.SCT)表单设计方法 表单向导设计表单(简单的表单) 表单设计器设计表单(灵活设计表单,并可以修改表单)

用表单向导创造单表表单进入表单向导方法:在项目管理器中表单→ “新建”→ “表单向导”

Page 117: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

在弹出的“向导选取”对话框中选取: 表单向导:为一个表或视图建立数据处理表单 一对多表单向导:为具有一对多关系的两个表(或视图)建立数据处理表单

表单向导操作步骤单表表单创建步骤针对课程表(kc.dbf)

步骤 1、字段选取——选取表(或视图)以及所需处理的字段;步骤 2、选择表单样式步骤 3、排序记录步骤 4、完成保存表单之后,可以在“表单设计器”中打开并修改它。 表单向导只能

创建表单,不能修改表单

Page 118: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表单运行方法一:在项目管理器中选定表单名→ “运行”方法二:DO FORM <表单文件名> | ? (无须带扩展名)

表单向导创建一对多表单具体操作步骤针对学生表(xs.dbf)和成绩表(cj.dbf)展开,创建 xsll 表单

1. 从父表中选定字段2. 从子表中选定字段3、关联表4. 选择表单样式5. 排序记录6. 完成

表单设计练习1、建立学生情况处理表单2、建立课程表与成绩表的关联处理表单3、建立系和学生表的的关联处理表单4、建立班级和学生表的关联处理表单5、 通过向导建立如下表单

Page 119: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

提示:步骤一:设计 XS、KC 与 CJ 表的视图 KCCJ;步骤二:用一对多表单向导对 XS 与 XSKCCJ 设计课程修学查询表单

第十五讲 面向对象入门(二)主要内容

表单设计器窗口表单设计器的设计思想表单设计练习

表单设计器窗口进入表单设计器

方法一:在项目管理器中表单→ “新建”→ “新建表单”方法二:命令CREATE FORM [<表单文件名>|?]

Page 120: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

MODIFY FORM [<表单文件名>|?]

表单设计器窗口

表单设计器窗口中包含了当前编辑的表单与相关工具栏。与表单设计器协同工作工具栏有:

表单设计器工具栏——表单设计时需要的工具和窗口集合。 表单控件工具栏——为表单添加控件 属性窗口——为对象设置属性、事件代码 布局工具栏——对表单上的对象进行各种布局调整 调色板工具栏——为对象设置前景色和背景色

表单设计器工具栏

Page 121: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

图示 意义 说明设置 Tab顺序 改变各对象的序号数据环境窗口 为表单可视化地创建、修改数据环境属性窗口 描述对象的形态,设置操作形为代码窗口 编辑事件代码表单控件工具栏 由此上工具在表单上生成对象调色板工具栏 设置对象的前景色、背景色布局工具栏 对象在表单上的布局设计表单生成器 运行表单向导,提供简单、交互的方法生成表单自动格式 设定对象的样式

认识、练习使用!

表单设计器的设计思想数据环境设置

问题分析分析表单是否涉及到表或视图中的数据涉及,应在数据环境中加入表;否则,可略去该项设置。

打开“数据环境”窗口 主菜单,选择“显示”“数据环境”

Page 122: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表单设计器工具栏,单击窗口的“数据环境”按钮; 表单空白处,按鼠标右键激活快捷菜单,从中选择“数据环境”选项。

数据环境窗口操作 向表单添加、移去、浏览表或视图 为表或视图之间建立关系和取消关系(临时性)

数据环境属性数据环境也是一个对象。默认情况下,数据环境具有这样一些属性: 运行表单时,VFP 自动打开其数据环境中包含的表或视图。 在表单运行结束自动关闭表或视图(AutoCloseTables 属性可控制) 表以共享的方法打开,不可删除其中记录(Exclusive 属性指定表以独占方式打开)

Page 123: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

对于表单来说,VFP把“数据环境”中的全部字段列在“属性”窗口中构成 ControlSource 属性列表。设计表单界面

设计表单界面可能用到的工具栏有:表单控件工具栏、布局工具栏、调色板工具栏。表单控件工具栏用途:把控件添加到表单上组成:一组控件按钮和一些辅助控制按钮

Page 124: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

标签 表单上的标题文本框 保存单行文本编辑框 保存多行文本命令按钮 执行命令命令按钮组 相关的命令编组选项组 单项选择复选项 通过复选框进行多项选择组合框 下拉式组合框列表框 列表框(内容多时可滚动)

微调器 通过点触进行数据调节表格 表格形式浏览数据图像 在表单上显示图像计时器 定期捕捉计时器事件(运行时不可见)

选项卡* 多页以分类显示或操作OLE 容器控件* 链接到其它对象OLE绑定型控件* 链接到表的通用型字段线条 在表单上画各种类型的线条形状 在表单上画各种类型的形状(矩形→ 椭圆)

容器* 在容器对象中可容放其它对象认识、练习使用!布局工具栏

选定的若干对象左边对齐选定的若干对象右边对齐选定的若干对象顶边对齐选定的若干对象底边对齐选定的若干对象垂直居中对齐选定的若干对象水平居中对齐选定的若干对象同宽选定的若干对象同高

Page 125: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

选定的若干对象具有相同大小(同宽并同高)要点:先选定对象,后进行布局设置布局练习:修改 KC.SCX,一排横向按钮改换成一列同宽、同高并左对齐的竖向按钮,并置

于表格右边。

调色板工具栏作用:可使用“调色板”工具栏设定表单或报表上各控件的颜色。操作:选定控件,用鼠标单击相应按钮即可。

要点:先选定对象,通过按钮 T 进行前景色设定,通过桶形按钮进行背景色设置

Page 126: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

各对象的属性设置

选项卡:按分类显示属性、事件和方法程序。 全部——显示全部属性、事件和方法程序。 数据——显示有关对象如何显示或怎样操纵数据的属性。 方法程序——显示方法程序和事件。 布局——显示所有的布局属性。 其他——显示其它和用户自定义的属性。

有些属性是只读的,以斜体显示。有些属性在设计时只读运行时可修改和设置;也有些属性始终是只读的。

事件设计可由下列任一种方法进入代码编辑窗口: 表单上选中对象,在属性窗口中双击一事件名; 当鼠标选定某一对象,双击鼠标左键。

Page 127: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表单设计练习学生情况浏览表单

1、数据环境设置:添加学生表2、表单界面设计

在数据环境窗口中击 xs表的标题栏,后拖动放置表单 然后再在拖动生成的表格下面,加入一个按钮。

3、各对象的属性设置

对象 设置情况

表单 属性名 属性值

Closable .F.Caption 学生情况表

按钮 Caption 关闭

表格 拖动到适当大小即可

Page 128: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

4、事件设计:为“关闭”按钮设计 Click 事件:Thisform.release

课程浏览表单

第十六讲 常用控件使用介绍(一)主要内容

深入了解对象和数据标签的使用文本框与编辑框的使用列表框与组合框的使用综合举例

深入了解对象和数据两类控件数据绑定型控件

Page 129: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

回顾学生浏览表单,思考问题:学生信息如何能在表单上显示的呢?原因:1、 用以显示学生信息的文本框与图像控件是数据绑定型控件2、 我们还为每一个文本框以及图像控件设置了关联字段

非数据绑定型控件表单下方的四个按钮、标签,都属于非数据绑定型控件。

ControlSource属性要实现对象与字段的字据绑定,就需要设置该属性自动设置——从数据环境的表或视图中直接拖动字段到表单主动设置——先创建对象,在属性窗口的“数据”下设置。

标签的使用 作用:显示文字标题(不超过 256 个字符) 常用属性:

Caption 设定显示文字标题内容Autosize 自动调整尺寸Name 对象名称Backstyle 背景类型是否透明(默认不透明)Forecolor 文字颜色Backcolor 背景颜色(在透明时此项设置无效)

Page 130: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Wordwrap 设定.T.时可自动折行 示例:

文本框、编辑框的使用文本框的使用与实例 作用:显示、编辑表或视图中非G、M 类型字段的数据 常用属性:

Name 对象名称Controlsource 绑定数据(变量、字段)

Value 文本框中当前显示内容Inputmask 输入格式Format 数据显示格式 (如 Z——当值为 0 时并不在激活状态时显示为空)Passwordchar 其设定字符为输入显示,以保密输入内容Readonly 为.t.时只读,不能编辑(此时 Backcolor 设置无效)Forecolor 文字颜色Backcolor 背景颜色(在透明时此项设置无效)

Page 131: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

示例:

事件代码: Command2.Click:(复位)Thisform.text1.value=0Thisform.text2.value=0Thisform.text3.value=0Thisform.text1.setfocus()

说明:setfocus 方法与鼠标的点击均可使对象得到焦点 扩展:将 text3 对象设定为不能取得焦点(不能编辑修改) (利用 When 事件,When 在对象得到焦点前激发,若返回.F.,对象不能得到焦点)

编辑框的使用 作用:显示、编辑表或视图中的备注型字段的数据 常用属性:

Name 对象名称Controlsource 绑定数据(变量、字段)Value 编辑框中当前显示内容Readonly 为.T.时只读,不能编辑Scorllbars 确定是否有垂直滚动条

列表框与组合框的使用 列表框的使用与实例 作用:显示一组预定的数据,可通过滚动条浏览并从中选择

Page 132: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

常用属性:Name 对象名称Rowsourcetype 数据源类型Rowsource 数据来源Columnwidth 列宽度Columnlines 有无行线

ListIndex 当前选取第几个Value 当前选取的项数据

RowsourceType取值RowSourceTy

pe 列表项的源0 在代码中用 AddItem 方法向列表中添加

项1 值2 别名3

SQL语句4 查询(.QPR)5 数组6 字段7 文件8 结构

Page 133: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

9 弹出式菜单,此项是为了提供向后兼容性

常用事件:Interactivechange 交互变化(用户鼠标或键盘的动作) 示例:

提示:RowSourceType 设为 1(值),RowSource:red,green,blue,white

组合框的使用与实例 作用:以下拉列表的方式显示一组预定的数据,以供从中选择 常用属性:

Name 对象名称

Page 134: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Rowsourcetype 数据源类型Rowsource 数据来源Columnwidth 列宽度Columnlines 有无行线

ListIndex 当前选取第几个Value 当前选取的项数据

常用事件:Interactivechange 交互变化(用户鼠标或键盘的动作) 示例一:

说明:Combo1. Rowsourcetype: 1——值 Combo1. Rowsource: +,-,×,÷ Command1.Click: 示例二:

Page 135: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

说明:Combo1. Rowsourcetype: 6——字段 Combo1. Rowsource: js.xm

综合举例【题目 1】创建表 8-13所示的自由表 pass.dbf 后,设计图示的系统登录表单。登

录成功,弹出窗口显示“登录成功”字样。设有用户表 pass.dbf:Username password

yang 1234vfp 2003new Qqq000000

【题目 2】创建一个各系学生查询表单

Page 136: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

提示:先用向导创建如下表单,然后修改之。

第十七讲 控件使用介绍(二)主要内容

Page 137: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

形状的使用微调器的使用复选框与选项组的使用命令按钮与命令按钮组的使用综合练习

形状的使用( Shape ) 作用:用于创建各类矩形或圆。有利于将表单上的相关控件归纳为一组。 常用属性:

Name 对象名称SpecialEffect 特殊效果设定:1-平面(默认);0-三维(Curvature 为 0 时有

效)Curvature 确定形状的曲率(0——99)FillColor 填充色FillStyle 确定形状的填充方式

取值 0:实线,即实心填充形状。取值 1:透明,无填充,即空心形状。取值2—7:各种线条。

BorderStyle 指定控件的边框式样取值 0:透明,无边框线。取值 1—6:各种线条。

示例:创建自由表 ques.dbf 后,设计图示表单。No

(N,2)Question(C,60) Answer(M)

1 在 VFP 中查询与视图有何异同点?

memo

2 数据绑定型控件是如何具体实 memo

Page 138: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

施绑定的?3 叙述 VFP 中的两种编程方式。 memo

微调器的使用微调器的使用与示例(Spinner) 作用:在一定的数值范围内进行数值选择,或在框内键入一个数值 常用属性:

Name 对象名称Increment 微调时增减步长Keyboardhighvalue 键盘输入最大值Keyboardlowvalue 键盘输入最小值Spinnerhighvalue 单击按钮时可输入的最大值Spinnerlowvalue 单击按钮时可输入的最小值Controlsource 绑定数据源(字段) 常用事件:

Page 139: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Interactivechange 用户鼠标单击交互变化Keypress 用户键盘输入数值 示例:

复选框与选项组的使用复选框的使用与示例(Checkbox) 作用:指定或显示一个逻辑状态,可维护变量、数值或 L 型字段 常用属性:

Name 对象名称Caption 设定显示文字Value 用户的指定值(0-.F.,1-.T.,2-NULL) (真:当前有效;假:当前无效)Autosize 自动尺寸Backstyle 透明否(0——透明,1——不透明)Controlsource 绑定数据源(字段)

Page 140: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

示例:

选项组的使用与示例(OptionGroup) 作用:提供若干个可选项,以选择其中一项 常用属性:

Name 对象名称Buttoncount 项数(默认为 2)Value 用户选取项目的序数(系统自动得到)Autosize 自动取大小Borderstyle 外框线有(默认)或无Backstyle 透明否(0——透明,1——不透明)Controlsource 绑定数据源(字段) 常用事件:Interactivechange 交互变化(用户鼠标或键盘的动作) 包含对象:Option

Option 的常用属性 Caption(设定项目文字) Backstyle 透明否(0——透明,1——不透明)

Page 141: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Autosize 自动取大小 Option 的常用事件 Click(用户鼠标选定)

示例一:

示例二:

命令按钮与命令按钮组的使用

Page 142: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

命令按钮的使用与实例(CommandButton) 作用:用来捕捉用户的单击事件以执行某个任务 常用属性:

Name 对象名称Caption 设定显示文字Picture 正常状态下按钮图示Downpicture 击按钮时放掉鼠标前按钮图示Enabled 按钮是否可用Autosize 自动调整尺寸 Wordwrap 设定.T.时可自动折行ToolTipText 工具提示文本(须对 FORM 的 Showtip 设为.T.,该项才起作用) 常用事件: Click 用户鼠标单击

示例:

Page 143: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

命令按钮组的使用(Commandgroup) 作用:用来建立一组命令按钮(可以对它们作为一组处理,也可以个别处理)。在按钮组中包含了按钮对象 常用属性:

Name 对象名称Buttoncount 按钮个数(默认为 2)Value 用户选取按钮的序数(系统自动得到)Autosize 自动取大小Borderstyle 外框线有(默认)或无 常用事件: Click 用户鼠标单击

示例:

Page 144: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

综合练习练习一:设计如下表单

题目表 ques.dbf:No Question(C,60) Answer(M)

Page 145: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

(N,2)1 在 VFP 中查询与视图有何异

同点?memo

2 数据绑定型控件是如何具体实施绑定的?

memo

3 叙述 VFP 中的两种编程方式。 memo

练习二设计如下表单:

回答下列问题1. 表单的数据环境如何设定?2. 表单上应用了哪几类控件,分别有何作用?3. 表单上哪些对象是数据绑定型的?通过何属性绑定?4.叙述组合框、微调器对象的属性设置5.写出各命令按纽的事件代码

Page 146: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

第十八讲 控件使用介绍(三)主要内容

表格对象的设计与使用计时器的常用属性与使用图像控件的使用页框的使用综合实例

表格对象的设计与使用表格的认识与作用

用途:在表单上显示和操作多行数据。表格示例一

表格也常常适用于一对多关系的子表当父表记录改变时时,表格显示与父表记录对应的子表的记录数据表格示例二:

Page 147: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

用向导设计带有表格的查询表单(一对多表单)任务:设计学生成绩表单

1.准备表格需要的数据2.选择一对多表单向导3.从父表中选择字段4.从子表中选择字段5.设置两个表的关联字段

Page 148: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

6.设置表单样式7.确定排序方式8.完成

表格的常用属性表格(Grid)本身的常用属性RecordSourceType:指定表格的数据源类型。

类型可以是表、视图或查询等RecordSource:指定表格的数据源ColumnCount:指定表格的列数,如果 ColumnCount 属性设置为-1(默

认值),在运行时,表格将包含与其链接的表中字段同样数量的列。Readonly:指定表格中数据只读否DeleteMark:指定删除标志显示否表格所包含列(Column)的常用属性

FontSize,Forecolor,BackcolorDynamicBackcolor, DynamicForecolor, (表单刷新时设定的背景、前景色)ReadOnly

Currentcontrol:列中的活动控件(不同的列可有不同的活动控件)ControlSource:可指定控件的数据来源列包含标头(Header)的常用属性

Caption:表格上该列的标题Forecolor,Backcolor,Alignment(居中)

表格的设计表格示例一的设计1.数据环境设置添加视图 KC 表;2.界面设计

Page 149: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

3.属性设置4.事件设计为命令按钮设计事件代码表格示例二的设计

1.设计准备,创建视图 xskccj在视图中添加字段:学号、姓名、课程代号、课程名、必修课、成绩、学分、补考否、

学期,可以学号排序;2.数据环境设置3.设计表单界面4.属性设置(1)为表单和三个标签分别设置 Caption 属性为文本框设置 ControlSource 和 ReadOnly 属性;为组合框设置属性如下:

RowSourceType :6 — 字段RowsSurce: xs.xm

(2)为表格设置属性。本例通过“表格生成器”来完成表格的设计。

在“表格项”页中,选定一个表或视图,并从中选取表格字段; 在“样式”页中选定表格样式。 在“布局”页中可为每一列设定抬头标题、列控件类型、以及列宽; 在“关系”页,设定一对多表之间的、联系父表和子表的关键字段。

Page 150: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

5.事件代码设计(1)为了让不及格的课程与成绩信息以红色显示,为表格设置 Init 事件:

this.SetAll("DynamicForeColor",;"IIF(cj>=60,RGB(0,0,0),RGB(255,0,0))","Column")

( 2 )最后 该 设 计 组合框的 事 件 , 本 例 中 考虑了 组合框的 Init 事 件 和InteractiveChange 事件。前者是为了对组合框进行初始化,使查询表单一启动即工作;后者是为了实现查询。

Init 事件代码:this.ListIndex=1this.InteractiveChange

InteractiveChange 事件代码:con="xm='"+this.Value+"'" sele xskccj set filter to &con go top thisform.Refresh

计时器的常用属性与使用计时器的作用

按时间进行表单对象的操纵。从而创建动态的表单。常用属性和事件 常用属性

Interval 时间间隔(默认为 0,100约为 1秒)Enabled 制造的事件是否响应

常用事件Timer 经过设定的毫秒间隔后响应的事件

设计示例

计时器的 Timer 事件:

Page 151: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

oo=thisform.label1oo.left=oo.left-5if oo.left+oo.width<0 oo.left=thisform.widthendif thisform.text1.value=time()

表单的 Init 事件:set cursor off

说明:表单的 TOP 与 LEFT 是相对 Visual FoxPro 5.0 系统窗口而言,表单上对象的TOP 与 LEFT 是相对表单而言。图像控件的设计与使用图像控件的作用允许在表单上放置图片。图像控件与其它控件一样也具有一整套的属性 、

事件与方法。因此可以在运行时动态地更改图像。图像控件的常用属性

Picture:要显示的图片BorderStyle:指定控件是否有单线边框Stretch:指定图像的伸展方式。

0——剪裁。超出控件大小的部分将不显示。1——等比填充。将保持图片原有比例,按图像控件的尺寸显示。2——变比填充。将图片调整到正好与图像控件的尺寸匹配。

Alignment:指定控件的对齐模式(左对齐、右对齐、居中)

图像设计示例

Page 152: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

示例表单是一个常见的软件说明表单表单的 Caption 属性设为“关于网通”,MaxButton、MinButton 属性均设为.F.,所

以表单右上角无最大化与最小化按钮。表单上的结构非常简单,仅由标签控件与图像控件组成。页框的使用页框的作用和常用属性(PageFrame) 作用:用来建立多页选项卡,扩展表单页面。在页框中可容放多页 常用属性:

Name 对象名称Pagecount 页数(默认为 2)ActivePage 当前激活页的序数TabStyle 页框样式(0——两端 1——非两端)

常用事件:Click 用户单击鼠标选取页 页对象(Page)常用属性:Caption 设定显示文字

Page 153: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Enabled 是否对用户事件响应ToolTipText 工具提示文本(须对 FORM 的 Showtip 设为.T.) 页对象(Page)常用事件:Click 用户单击鼠标

页框示例:

综合实例数据维护表单设计

设计步骤:1.数据环境设置

Page 154: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

添加四个表,将表之间的关系去除对各个表的 Exclusive 属性设为.T.2.设计表单界面3.属性设置(1)将页框设为四页、非两端的方式,即:

PageCount:4TabStyle:1

(2)每页的 Caption 属性和表格设计;4.事件代码设计(1)为页框对象的 Click 事件代码

Local ss=this.ActivePageDO case

CASE s=1SELE xs

CASE s=2SELE kc

CASE s=3SELE xi

CASE s=4SELE bj

ENDCASE(2)“增加”按钮的事件代码

Local xAPPEND blankthisform.Refreshx=thisform.pageframe1.ActivePagethisform.Pageframe1.Pages[x].grid1.column1.text1.SetFocus()

(3)“删除”按钮的事件代码deletethisform.Refresh

(4)表单的 Init 事件代码set deleted on表单的 destroy 事件代码select kcpackselect xs

Page 155: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

packselect xipackselect bjpack

第十九讲 面向对象深入解析主要内容

类的定义|类与对象的关系类的结构和特性Visual FoxPro 的基类深入认识对象的属性、事件与方法对象的操作深入理解事件导向模型

类的定义|类与对象的关系类的定义

“类是具有相同操作功能和相同的数据格式(属性)的对象的集合”客观世界中有:人类、水果类……VFP 中有:标签类、文本框类、按钮类……

类与对象的关系类是一个群体的简称。对象相当于群体中的一“个体”。对象是类的一个实例

举例说明:1.苹果与桌上的苹果2. 人类与坐在教室的你。思考:就苹果而言,该类常用的属性有哪些?

类有三大要素:属性、事件、方法。对象经由类建立而来,对象继承类所拥有的一切(属性、事件、方法),类决定了

对象的特性与行为模式。

Page 156: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

练习:试举例说明类与对象的关系类的结构与特性类的结构

最顶层是基类(VFP 系统提供的类)——基类可导出子类也可直接生成对象; 子类由基类导出,也可由已存在的子类导出 对象可由基类生成,也可由子类生成。说明:所有的对象都有类生成,但由那一层的类建立,由开发者确定。思考:怎样的情况下需要设计子类?

类的三大特性封装性——信息隐藏。在明确的界面上操作,而无须了解细节。正是这种封装,使得事情变得

单纯。继承性——根据既存之原型延伸出新个体的方法。通过已有的类派生一个新类时,新类继承了其父类的行为和属性。类生

Page 157: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

成对象时,对象也继承类的属性、事件和方法。多元性——允许同一方法作用于不同类的对象时可有不同的响应。

Visual FoxPro 中的基类 从应用角度看VFP 的基类

任务 相关控件显示信息 Label( 标签 ) 、 TextBox( 文 本框 ) 、 EditBox( 编辑

框)、Image(图像)、Shape(形状)

提供并接受一组预先设定的选择

OptionGroup( 选 项 组 按 钮 ) 、 List( 列 表框)、ComobBox(组合框)、Check(复选框)

接受给定范围之内 的数值输入 Spinner(微调器)允许用户执行特定 的命令 CommandButton(命令按钮)、CommandGroup(命令

按钮组)

在给定的 时间间隔内执行特定的命令 Timer(计时器)

操作多行数据Grid(表格)

扩展表单PageFram(选项卡)

基类可分为容器类与控件类 容器类

Formset、Form、CommandGroup、Container、Grid、Column、

Page 158: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

OptionGroup、PageFrame、Page、Toolbar、DataEnvironment

控件类Label、TextBox、Spinner、CheckBox、OptionButton、commandButton

EditBox、ListBox、ComboBox、Line、Shape、Image、Timer、Cursor、Relation、Header、Separator、OleControl、OleBoundControl

容器类可包容对象容器类别 可包含的对象

Formset Form,ToolBarForm Container 与任何一 种控件对

象CommandGroup CommandButtonContainer Container 及任何一 种控件对

象Grid ColumnColumn Header 以 及除了 Timer 以外

的任何一种控件类对象OptionGroup OptionButtonPageFrame PagePage Container 与任何一 种控件对

象Toolbar 同上DataEnvironment Cursor,Relation

深入认识对象的属性、事件与方法对象的属性、事件与方法由类而继承。

对象的属性

Page 159: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

属性:对象的特性与特征。大部分的属性用来决定对象的外观(如字体等),而某些属性则决定了

对象的特性(如数据的绑定)。每个属性有默认值。说明:1)有些属性在设计时可更改,但在执行时只读;有些属性在执

行时才可更改;例 ComboBox 的 Listindex 属性在设计时是不可更改的。 2)VFP允许建立用户自定义属性。示例:给表单设计一个退出按钮,当三次 Click 以后才真正退出

对象的事件事件:由对象识别的一个动作。事件代码:事件发生时执行的代码。说明:1)对象的事件由类继承,子类的事件由父类继承。事件不可象属

性和方法一样自己定义。

Page 160: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

2)在事件代码中不可再包含其他的程序或类定义。 3)引发事件的动作并不全来自用户的操作。源程序与操作系统都有

可能引发事件。

对象的方法方法:其本质是一个函数,它完全内建于对象中(封装)。可藉着调用方法,来完成特定的操作。方法能接收参数,也能将数据返

回。说明:1)VFP允许用户定义新方法; 2)若在对象的一个内建的方法(如 Refresh)中编写源程序,调用

方法时,会先执行这段程序,再执行该方法既有的功能操作。示例:通过退出按钮退出表单时,自动弹出一提示框

Form1.release:

Page 161: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

x=MESSAGEBOX("你真的要退出吗?",32+1)

IF x!=1NODEFAULT

ENDIF

对象的引用 绝对引用:根据对象的绝对从属关系来引用。 适合情况:在对象的外部引用对象。具体方法:从最外层的对象开始逐一向内层进行调用,各层对象间由运算符 . 相

连接。注意:最外层对象必须使用其对象变量,内层对象使用对象名称(即对象的

NAME 属性值)。例如:do form <表单名> name pp

pp.backcolor=0 &&将表单背景色设为黑色 pp.text1.fontbold=.t.

pp.visible=.f &&执行表单后,将表单隐藏技 巧 : _Screen.Activeform 指 向 VFP 窗 口 中 的 活 动 表单。_Screen指向VFP桌面。

相对引用:通过容器层次的关系属性进行间接引用。适合情况:在对象的事件程序与方法中引用对象。相对从属关系:

This 表示当前对象Parent 表示当前对象的直接容器(父对象)Thisform 表示当前对象所在的表单Thisformset 表示当前对象所在的表单集

注意:This、Parent、Thisform、Thisformset仅能用于事件程序或方法程序中。

对象的操作

Page 162: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

建立对象对象总是由类生成,具体有二种建立方法: 表单设计器 CREATEOBJECT()函数语法:CREATEOBJECT(ClassName [,参数表])功能:根据名称为 ClassName 的类生成一个对象。例:根据基类 Form 生成表单对象,并显示表单。

myform=createobject('form')myform.show

说明:1、myform 是一个对象变量,关闭表单后自动释放2、利用 Form 类提供的 SaveAs 方法,可以将 CreateObject 生成的表单存入

到一个.scx 文件MyForm = CreateObject(“Form”)MyForm.SavaAs(“NewForm1”)Do Form NewForm1

设置对象的属性二种设置方法: 通过属性窗口完成设置 在程序中设置格式一:Object.Property [ = PropertyValue]格式二:WITH ObjectName [.Cstatements] ENDWITH适用:对同一对象进行多项属性设置,亦可在其中进行方法调用

示例:编程创建一个自动居中的表单,表单背景色为白色,标题文字为“由程序生成的表单”。

[程序]MyForm = CreateObject("Form")WITH MyForm .BackColor = RGB(255,255,255) .AutoCenter = .T.

Page 163: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

.Caption = "由程序生成的表单"

ENDWITHMyForm.SaveAs("NewForm2")Do Form NewForm2

调用对象的方法语法:Object.Method([参数表])例中的 myform.show 、myform.release均是调用方法(显示表单与释放表

单)执行对象的事件代码

自动执行:对象识别用户的动作,相应的事件代码自动执行用户执行:事件并未发生,用户主动调用语法:Object.Event([参数表])例:myform.Dblclick说明:用户调用事件代码就好象调用一个过程,但对象的事件并没有被引发。举例说明:

在某对 象 上双击鼠标左键,将依次引发下列事 件 :MouseDown、MouseUP、Click、MouseDown、MouseUp、Dblclick,编写于这些事件中的事件代码将依次执行。

Page 164: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

而执行 Object.Dblclick语句只执行 Dblclick 事件中的事件代码,其它事件中的代码不会执行。

可由程序语句来执行的事件只能是如下的三类: 模拟鼠标动作类:Click、Dblclick、MouseMove、DragDrop 模拟按键动作类:KeyPress Error 事件

深入事件导向模型常用的事件

三个基本的、重要的事件(所有的对象都具有):

事件 引发时机 作用Init 对象创建时引发 对 象 的 初 始 化 设置, 可 在 其 中 通 过

Parameter命令接收参数;除了表单、表单集对象外,这通常是对象第一个被引发的事件当在 Init 事件中 Return .F.时,对象便不会创建

Destroy 对象释放、清除时引发 可在其中编写状态恢复程序。除了表单、表单集对象外,这是对象最后一个被引发的事件

Error 对象的事件程序或方法程序编写有误时,执行到错误的语句时引发

错误处理

常用的事件:

事件 引发时机

Page 165: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Click 用户鼠标单击某对象DblClick 用户鼠标双击某对象RightClick 用户鼠标右击某对象MouseMove 用户鼠标指针定位到对象上方时KeyPress 用户按下并放开某一按键时(键盘)GotFocus 用户通过某种方式(Tab键、鼠标单击、调用该对象的

SetFocus 方法)将光标定位在某一对象上,而使其成为当前对象时(即对象得到焦点)

LostFocus 当光标从对象上移开而使其不再是当前对象时(即对象失去焦点)

When 在对象得到焦点前引发,如该事件程序返回.F.,则对象不可被定位

Valid 在对象失去焦点前引发,如该事件程序返回.F.,则对象不可退出

Interactivechange 当用户以交互方式更改对象的 Value 属性值时

事件引发执行的次序

面向对象的编程主要是编写事件程序。只有清楚了事件被引发执行的次序,才能了然某些处理操作应在怎样的事件中说明。

表单建立时各个事件被引发的次序:

Page 166: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

对象 事件 说明数据环境 BeforeOpenTabl

es

表单 Load

数据环境临时表 Init

数据环境 Init

对象 Init 对表单上的每个对象,从较内层的对象至较外层的对象

表单 Show

表单 Activate  对象 When Tab 键次序中的第一对象表单 GotFocus  对象 GotFocus 如果 When 事件返回为.T.

表单关闭时各个事件被引发的次序:

对象 事件 说明表单 QueryUnload  对象 Destroy 对表单上的每个对象,从较外层的

对象至较内层的对象表单 Unload  

Page 167: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

数据环境 AfterCloseTables  数据环境 Destroy  数据环境临时表 Destroy  

事件跟踪方法 步骤:1.“工具” “调试器”2.打开“调试输出”窗口3.调试器中“工具” “事件跟踪”

Page 168: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

第二十讲 类的设计主要内容

类设计的意义和设计方法概述类设计器设计类类的操作和使用表单设计器设计类DEFINE CLASS ...ENDDEFINE 命令设计类

类设计的意义和设计方法概述类设计的意义

二个方面: 封装通用功能,使操作更便捷。 赋予应用程序统一的外观和风格如:允许用户在表中移动记录指针的命令按钮、关闭表单的按钮以及帮

助按钮等类设计的三种方法

Page 169: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

DEFINE CLASS ...ENDDEFINE命令 表单设计器 类设计器

自定义类的存储类可存储在类库中(.VCX、.VCT)反过来说,类库就是一组类的集合。

类设计器设计类进入类设计器

在类设计器中可以可视化地创建新类,可视化指的是在类设计时能看到每个对象的最终外观。

可由三种方法调出类设计器: “项目管理器”中,选择“类”选项卡“新建” “文件”菜单中选择“新建”(选择“类”)“新建文件”按钮 CREATE CLASS命令

通过示例类设计器创建新类的步骤【示例】创建一个绑定性别字段的类。建立过程如下:1.发出命令从以上列出的三种方法中任选一种执行。2.“新类”对话框设置不论选用的是哪一种方法,系统都会弹出一个“新类”对话框,如图所示。

Page 170: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

图 “新类”对话框类名——新类的名称派生于——导出该新类的父类存储于——保存新类的类库3.进入“类设计器”当指定了新类名、父类及存储该类的类库后,按下“确定”按钮

图 “类设计器”窗口“类设计器”的用户界面与“表单设计器”相同:“属性”窗口——查看和编辑类的属性“代码”编辑窗口——编写各种事件和方法程序的代码。4.在控件类或容器类中添加控件如果新类基于控件类或容器类,则可以向它添加控件。

Page 171: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

方法:在“表单控件”工具栏中选择控件按钮,将它拖动到“类设计器”中,即实现了控件的添加。

在本例中,该步不需要。5.设置属性、事件代码设计属性的设置在属性窗口中进行,事件代码同样也是针对具体对象的具体事件在代

码输入窗口中录入。在本例中,属性设置如下:

对象 属性名 属性值Myoptiongroup BorderStyle 0(无)

Autosize .T.BackStyle 0(透明)

Option1 Caption 男Option2 Caption 女此时选项组子类如图所示。

图 选项组子类在本例中没有设计事件代码。6.为类中控件新建属性和方法可以向新类中添加任意多的新属性和新方法。属性保存数据,方法则保存调用时可以运行的过程代码。新建属性步骤如下:A. 从“类”菜单选择“新建属性”。B. 在“新建属性”对话框中键入属性的名称。C. 指定可视性:公共、保护或隐藏。“公共”属性和方法可在应用程序的任何位置被访问。“保护”属性和方法,只能被该类定义内的方法程序或该类的子类所访问。“隐藏”属性和方法,则只能被该类的定义内成员所访问。该类的子类不能“看

到”或引用它们。(7)保存类按下类设计器的关闭按钮,在出现提示框后继续按下“是(Y)”按钮后,即可

关闭类设计器并保存类到前面指定的类库。

Page 172: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

类的操作和使用类可以从一个类库移到另一个类库,类也可以编辑(增加类的功能或修改类的错

误),这里简单讨论类的修改操作。类的修改操作

一个必记原则:对类的修改将影响所有的子类和基于这个类的所有对象。即所有子类和基于这个类的所有对象都将继承修改。

修改类也是在类设计器中进行,有二种进入方式: “项目管理器”中选择要修改的类“修改” MODIFY CLASS用第一种方式,“类设计器”直接打开。MODIFY CLASS命令将弹出“打开”对

话框,如图所示。

注意:如果类已经被任何一个其他应用程序组件使用,就不应该修改类的 Name属性,否则,Visual FoxPro 在需要时不能找到这个类。将类添加到表单任务:创建一个学生情况浏览表单,将前面所创建的类 xb派生的对象

放置在表单上。步骤如下:1.用表单设计器创建一个表单;2.数据环境中置入 XS 表,除了性别字段外,将其余所有字段一一拖

曳到表单。并加入命令按钮。

Page 173: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

3.按下“表单控件”工具栏中的 ,将出现一个菜单 ,单击“添加”选项,出现如下图类库“打开”对话框。

4.选择具体的类库文件(.VCX),单击“打开”按钮,工具栏就变成指定类库中的类

5 . 按下“表单控件 ”工具栏的 按钮, 在预留位拖放即可 。将该 对 象 的Controlsource 属性改成 xs.xb,表单就可正常运行。

Page 174: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

实验题1. 用类设计器设计如上选项组子类;2. 创建学生情况浏览表单,并将子类添加上来,用以表达学生性别信息。

表单设计器设计类适用情况:在设计表单过程中,发现该表单或其上的某个对象有重用价

值,可以直接在表单设计器中将表单或所选对象保存为类。任务:设计职工情况浏览表单,表单上要求设计一个命令按钮组,组中

包含四个指针定位按钮:“最前”、“上一条”、“下一条”、“最后”,由此实现记录定位。然后讨论由表单设计器设将命令按钮组存为子类的步骤:

Page 175: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

1.在表单设计器中按任务进行表单设计。如图所示。

命令按钮组的 Click 事件:n=this.Valuethis.SetAll("enabled",.t.,"CommandButton") DO case

CASE n=1GO topthis.command1.enabled=.f.this.command2.enabled=.f.

CASE n=2Skip -1IF recno()=1

this.command1.enabled=.f.this.command2.enabled=.f.

ENDIFCASE n=3

SkipIF recno()=recc()

this.command3.enabled=.f.this.command4.enabled=.f.

ENDIF

Page 176: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

OTHERWISEGO bottomthis.command3.enabled=.f.this.command4.enabled=.f.

ENDCthisform.refresh

2.选定要保存为类的对象在本例中,选定设计好的命令按钮组。如果不选表单上的任何对象,在

第三步操作后将保存表单子类。3.将选定对象存为类选择“文件”菜单下的“另存为类”菜单项,出现如图的“另存为类”

对话框。

对话框由和删除两部分组成:保存内容和类定义。保存内容可选择当前选定控件(默认)与当前表单。类定义须给出类名

以及类存入的类库名。按“确定”按钮即可保存类到指定类库。

Page 177: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

实验题3. 用表单设计器设计如上命令组子类;4. 创建课程情况浏览表单,并将命令组子类添加上来,用以记录定位。

DEFINE CLASS ...ENDDEFINE 命令设计类

命令格式

DEFINE CLASS <类名> AS <父类名>[ PropertyName = Exp ...]

[ADD OBJECT <对象名> AS <类名> [WITH PropertyName1 = Exp1 [,PropertyName2 =

Exp2...]]...[ FUNCTION | PROCEDURE NamecStatements...ENDDEFINE

示例(defineclass.prg)

【示例】建立一个表单类。myform=CREATEOBJECT('frmClass')myform.SHOW

Page 178: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

READ EVENTDEFINE CLASS frmclass AS FORM &&由 FORM 导出子类 frmClass

CAPTION='我的标题'LEFT=100TOP=30PROCEDURE Click &&设计 Click 事件

= MESSAGEBOX('MyForm has been clicked!')ENDPROCPROCEDURE Unload &&设计 Unload 事件

CLEAR EVENTENDPROC

ENDDEFINE

【例 9-5】编程创建一个带有“关闭”命令按钮的表单。方法一:

myform=CREATEOBJECT('frmClass')myform.ShowREAD eventDEFINE CLASS frmClass AS Form

Caption='我的表单'Width=300Height=180AutoCenter=.t.ADD OBJECT MyCommand AS CommandButton WITH ;

Caption='关闭',;left=100,;top=80

PROCEDURE MyCommand.Clickthisform.Release

ENDPROCPROCEDURE Unload &&设计 Unload 事件

Clear EVENTENDPROC

ENDDEFINE

方法二:myform=CREATEOBJECT('frmClass')

Page 179: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

myform.ADDOBJECT('Command1','MyCommand')myform.SHOWREAD EVENTDEFINE CLASS frmClass AS FORM

Caption='我的表单'Width=300Height=180AutoCenter=.T.PROCEDURE UNLOAD

Clear EVENTENDPROC

ENDDEFINEDEFINE CLASS MyCommand AS COMMANDBUTTON

Caption='关闭'Left=100Top=80Visible=.T.PROCEDURE CLICK

thisform.RELEASEENDPROC

ENDDEFINE

第二十一讲 表单子类·表单集·工具栏主要内容

表单子类的设计和应用表单集的认识和设计工具栏的设计和应用类库操作

表单子类的设计和使用表单子类设计

表单设计器

Page 180: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

基本步骤:1. 进入表单设计器2. 按需要进行表单模板设计

(1)表单的属性设置、事件设计;(2)表单上加入对象(3)加入对象的属性设置、事件设计(4)对表单新建属性和方法

3. 将当前表单存为表单类。选择“文件”菜单下的“另存为类”菜单项,在“另存为类”对话框

中选择保存对象为“当前表单”即可。

类设计器基本步骤:1.发出创建新类命令2.在“新类”对话框中给出类名,置入的类库名。需说明该类派生于“FORM”父类。

3.按需要进行表单模板设计(1)表单的属性设置、事件设计;(2)表单上添加对象

Page 181: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

(3)所加入对象的属性设置、事件设计(4)对表单新建属性和方法

4.关闭类设计器,保存类。

表单子类的使用表单子类与其它子类应用方法不同。需分两种情况讨论:利用表单子类

设计单张表单与表单集中的表单。这里先说利用表单子类设计单张表单基本步骤:1.进行表单模板设置方法:由“工具”“选项”弹出“选项”设置窗口,如图

Page 182: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

设置为默认值:将设置参数存入参数文件,每次启动 VFP 时,都会加载该文件,所以以后也起作用。

2.由表单模板生成表单任何一种方法创建表单即可。

实验题5. 分别用类设计器和窗体设计器设计具有如图所示的表单子类:

Page 183: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

特点:自动置中心,设标题和背景图片,无控制框,添加“Exit”按钮6. 利用表单子类设计任意简单的表单

表单集的认识和设计表单集的认识

什么是表单集表单集是一个或多个相关表单的集合。表单集(FormSet)是一种容器类。可使用“表单设计器”在表单集中布置

表单。表单集的适用情况 要为一个表单设计工具栏此时表单集中置有一张表单和一个工具栏;

Page 184: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

需要通过几个表单的协同操作才可完成一个任务此时表单集中置有多张表单,通常在一个表单活动时,有些表单处于隐藏状态。说明:必须让一组表单共享数据环境时使用表单集才比较有意义。在运

行表单集时,即使是只显示表单集的第一个表单,Visual FoxPro 也要创建表单集中所有表单和所有控件的实例,这样做是要花费时间的。

表单集的设计同样地,通过一个任务的解决过程来探讨表单集的设计方法。任务: 通 过 一 个 表单列出不同的 系 名 。 表单上 有列表框, 一 个

“Browse”按钮和一个“Exit”按钮,如果按下“Browse”按钮,将弹出一个当前选定系的教师情况表单,“Exit”按钮退出操作。

(为了利用刚才的表单子类,先删去其上的 Exit 按钮,并将它设为表单模板)

基本步骤:1.新建表单任一种方法进入表单设计器,此时设计

器中有一张表单,它为主表单。2.主表单设计

Page 185: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

(1)数据环境的设置(2)表单的属性,事件设计(3)根据任务在表单上添加对象(4)对所加对象进行属性设置(涉及到另外表单的工作暂时不做)如图所示:

Command1.Caption:\<Browse

Command2.Caption:\<Exit----------------------------

Command1.Click:Command2.Caption:thisformset.release

3.创建表单集方法:“表单”“创建表单集”4.添加新表单(1)表单的属性,事件设计Name: Form2

AlwaysOnTop:.T. 总是在最前Visible:.F. (开始不可见)

Page 186: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

(2)根据任务在表单上添加对象直接从数据环境中拖出表生成表格 加入一个按钮对象(3)对所加对象进行属性设置Grid1.DeleteMark:.F.

Command1.Caption:\<Return

Command1.Click:thisform.visible=.f.

如图所示:

5.表单之间的衔接具体而言,即设计主表单的 Browse 按钮的 Click 事件。thisformset.form2.caption=alltrim(thisform.list1.value)+;

Page 187: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

"系学生情况浏览"

thisformset.form2.visible=.t.

6.存盘完成注意:一个表单集存在一个.scx 文件中说明:为一个表单集新建表单,也可以象生成其它对象一样从类库工具

栏上直接拖入生成。

工具栏的设计和应用

工具栏的特性

工具栏永远显示在最上方; 当拖动工具栏到 VFP 主窗口的四边时,工具栏自动停靠在边界上; 工具栏未停靠时有一个半高的标题条; 工具栏的尺寸可改变,但工具栏上的对象顺序固定不变; 能在工具栏上布放的对象以外的空白区域拖动工具栏(双击 à 停靠/

未停靠); 不能通过键盘来操作工具栏上的对象。

工具栏的设计

Page 188: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

任务:试建如下样式的工具栏类 mytoolbar,置于类库myclass.vcx。

要求:如果正在运行表单,单击工具栏按钮时将改变表单的背景颜色;如无表单运行时,单击工具栏按钮将改变屏幕的背景颜色。

说明:可通过 Type(‘_screen.activeform’)=’O’检测当前有无表单处于激活状态。

基本步骤:1.发出创建新类命令2.在“新类”对话框中给出类名,置入的类库名。需说明该类派生于“ToolBar”父类。

3.按需要进行工具栏设计(1)工具栏的标题等属性设置

Caption: Color Setup

(2)工具栏上添加选项组对象(OptionGruop1)

(3)所加入对象的属性设置并布局OptionGruop1

ButtonCount:5

BackStyle: 0---透明

Page 189: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

BorderStyle: 0—无Option1、Option2、Option3、Option4、Option5 分别设

置如下属性:Caption: 红、绿、黄、白、黑Style: 1---图形ForeColor:

(4)进行必要的事件设计Local xxXx=_screenIf type(“_screen.ActiveForm”)=’O’ Xx=_screen.ActiveFormEndifxx.BackColor=This.Buttons[This.Value].ForeColor

4.关闭类设计器,保存类。

工具栏的使用方法一:用于表单集,由工具栏类生成工具栏对象(工具栏随表单集的打开而打开,随表单集的关闭而关闭)方法二:用在应用程序中,由 createobject()函数生成

练习题7. 设计“Color Setup”工具栏子类;

Page 190: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

8. 试设计包含一张表单和“Color Setup”工具栏对象的表单集。9. 试通过程序生成一工具栏,挂接在当前系统中。

工具栏的常用属性和事件工具栏的常用属性Caption:指定工具栏的标题。Moveable:指定在运行时用户是否可以移动工具栏。该属性在对象设

计期间可更改,而在运行期间是只读的。ShowTips:确定是否显示工具栏中指定对象的提示。说明:具体的提示信息应由工具栏上各对象的 ToolTipText 属性指定。工具栏的常用事件 Init 事件:工具栏建立时触发。工具栏的常用方法

Show

方法 语法:Object.Show

功 能 : 显 示 对 象 ( 限 于form 、formset 、_screen、toolbar)

Page 191: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

Hide

方法 语法:Object.Hide

功能:通过设置对象的 visible 属性为.F.来隐藏对象(限于 form、formset、_screen、toolbar)

Dock

方法 语法:Object.Dock(n) (仅限于 toolbar)功能:停靠或移出工具栏说明:参数 n 的值意义如下:-1-----不停靠(默认值) 0-----停靠顶边1-----停靠左边 2-----停靠右边3-----停靠底边

类库操作类库操作创建类库

创建类时在“新类”对话框的“存储于”框中指定一个新的类库文件

CREATE CLASS 命令 CREATE CLASSLIB 命令

复制和删除类库中的类把类库添加到项目管理器后,可以很容易地将类从一个类库复制到另一个类库。

步骤如下:(1)确保两个类库都在项目中(不一定是同一个项目);(2)在“项目管理器”中,选择“类”选项卡;(3)单击包含类的类库左边的加号;(4)将类从旧库中拖到新库中。提示:为了快速简便,可以将类和基于这个类的所有子类都包含在一个类库中。

Page 192: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

删除类库中的类 在“项目管理器”中选择类并选择“移去” REMOVE CLASS ClassName OF ClassLibraryName命令

给类库中的类更名 在“项目管理器”中选择类,在快捷菜单中选择“更名” RENAME CLASS ClassName1 OF ClassLibraryName TO ClassName2

命令必须注意:包含这个类和子类的表单仍然引用旧名称!!类库的打开和关闭打开类库------SET CLASSLIB TO <类库> 关闭类库-----SET CLASSLIB TO

类浏览器Visual FoxPro 包含一个“类浏览器”,使得使用和管理类和类库更加方便。进入

“类浏览器”方法:菜单选择“工具”“类浏览器”类浏览器如图所示。

当打开“类浏览器”窗口时,会同时打开带有单个按钮的工具栏。通过这些按钮可以容易地对类和类库进行操作。如可通过其上第三个按钮,察看所选类的类代码。下

Page 193: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

面列出前面所建的 MyOptionGroup子类的类代码:

第二十二讲 报表设计主要内容

认识报表用报表向导创建报表报表设计器与相关工具栏的认识报表设计器设计报表的基本思路

认识报表学生成绩单报表示例

Page 194: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

报表的作用:表数据输出的一种方式报表文件:扩展名为.FRX

创建报表的两种方法 用报表向导创建单表或多表报表 用报表设计器创建报表进入报表向导或报表设计器: 在项目管理器中,“文档”选项卡下的报表“新建”

以上任一种方法都将弹出如图的“新报表”对话框:

主菜单“新建”文件类型选“报表”“新建文件”(报表设计器)主菜单“新建”文件类型选“报表”“向导” (报表向导)

用报表向导创建报表认识报表向导不论哪种方法进入报表向导,系统都会弹出“向导选取”对话框:

Page 195: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

报表向导——创建基于单个表(或视图)的报表一对多报表向导——创建基于两个一对多关系表的报表

报表向导操作步骤报表向导的创建步骤针对任务展开说明:用报表向导创建基于学生表的简单报表。1.字段选取确定所建报表基于哪个表(或视图)。

2.分组记录

Page 196: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

单击分组选项可确定分组方式:

单击总结选项可确定统计方式:

Page 197: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

3.选择报表样式

VFP6.0 中报表样式有五种:经营式、帐务式、简报式、带区式、随意式。例中报表样式选择“帐务式”。4.定义报表布局具体指定列数、字段布局和打印报表纸张方向。

5.排序记录数据报表输出时记录的排序方式。(最多可选三个排序字段)在本例中,学生学号 XH 为唯一排序字段(升序)。6.完成

Page 198: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

在该步中,输入报表标题,按“完成”按钮后,便生成所需报表。如图

报表问题分析: “报表标题 各班学生情况表”要置中 “各班后的汇总信息 计数 010111” “ ”改为 班级人数各班学生记录前都放有学号、姓名等字段名 “ ”班级代号 标签直接放在具体的班号前更直观

一对多报表向导操作步骤任务:创建基于 XS 表和 CJ 表的报表,统计每个学生修学课程数、总分、总学分;1.从父表中选定字段2.从子表中选定字段3.为表建立关系4.排序记录5.选择报表样式6.完成

Page 199: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

练习1.用报表向导创建基于 KC 表的报表 KC_REPORT1;2.创建基于 XI 表和 XS 表的报表 XIXS_REPORT,并统计各班人数

说明:1.当基表数据更新,报表不必重建,报表浏览或打印时数据会自动更

新。2. 向导只可创建,不能编辑。如果由向导创建的报表需要修改,须

“ ” ――在 报表设计器 中进行。这也是设计报表的一种惯常方法 报表向导创建 + 报表设计器修改

报表设计器与相关工具栏的认识进入报表设计器创建建一个新的报表:

在项目管理器中报表→ “新建”→ “新报表” 命令CREATE REPORT [<报表文件名>|?]

报表设计器认识

页标头:页标题等每页的顶端打印一次,用来说明该列细节区的内容,

Page 200: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

通常就是该列所打印字段的字段名。细节区:用来输出标中记录的内容,打印次数由实际输出的表或视图的

记录数决定,每条记录打印一次。页注解:与页标头类似,每页只打印一次,但它是打印在每页的尾部,

可以在该区打印小计、页号等。报表菜单条

“标题/总结”

标题:报表总标题、日期等。每个报表只打印一次,打印在报表的最前面。“标题”如果需要,它可以在分开的页上打印。总结:总计数据等信息。“总结”每个报表也只打印一次,打印在报表

细节区的尾部。

Page 201: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

“数据分组”

增加“组标头”、“组注脚”,它们的作用与“页标头”、“页注脚”相似,分别在每个组或列的开始与结尾部分打印一次。

在数据汇总的时候需要。

Page 202: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

“变量”设定在报表运行期间存在的变量名及其值。该变量可以出现在域控件的

表达式中。“默认字体”设定报表中文本的的字体类型、字形和大小。“私有数据工作期”设置报表基于的源表是否在私有工作期中打开。在私有工作期中打开的

源表将不受其他报表、表单或程序的影响。“运行报表”对报表设计器中的报表进行打印输出。“快速报表”

Page 203: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

可快速地生成基于单表的报表。

报表设计相关工具栏报表设计器工具栏按钮 按钮说明 作用

数据分组 显示“数据分组”对话框,从中可以创建数据组并指定其属性。

数据环境 显示“数据环境设计器”,指定表单所使用的数据表。

报表控件工具栏 显示或隐藏报表控件工具栏。调色板工具栏 显示或隐藏调色板工具栏。可使用“调色板”工

具栏设定表单或报表上各控件的颜色。布局工具栏 显示或隐藏布局工具栏。使用布局工具栏可以在

报表或表单上对齐和调整控件的位置。

报表控件工具栏选定对象 移动或更改对象标签 创建标签对象字段文本 创建一个字段对象,用于显示表字段、内存变量线条 用于在报表上画各种线条矩形 用于在报表上画各种矩形圆角矩形 用于在报表上画各种圆角矩形

Page 204: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

OLE绑定 可链接到图片和绑定字段按钮锁定 锁定后可一次选择后添加多个同种类型的对象

布局工具栏调色板工具栏

报表设计器设计报表的基本思路快速报表

任务:生成基于学生表的快速报表。进入报表设计器,操作过程如下:1、执行“快速报表”菜单命令

2、字段布局等设置确定报表式样“标题”:选择报表的字段标题是否使用表的字段名称;

Page 205: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

“添加别名”:确定是否在报表字段名称前加入表的别名;“将表添加到数据环境中”:确定是否在报表中使用的表信息写入到数

据环境中。3、选择字段“字段”按钮:将弹出如图的“字段选择器”对话框,进行字段的选择。

3.按“确定”按钮完成(如图)

报表遗留问题:

Page 206: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

如何给报表加上适当的表格线? 如何用汉字标题替代字段名?

说明:快速报表可生成一个基础报表,然后进一步根据需要编修

自行设计报表基本思路基本报表设计1.数据环境设计可添加表、视图等报表的数据源,并可为表或视图设置索引

2.根据任务添加报表控件在报表的细节区通过字段控件来显示表中字段的数据。添加字段控件有二种方法: 从数据环境中直接添加字段控件 生成域控件,再设置控件指向字段

3.控件布局合理的布局可美化报表。对报表设计器中加入的控件有两种布局方法: “布局”工具栏,方法类似表单设计时的控件布局 利用“格式”菜单中的“对齐”和“大小”菜单命令进行控件布局

4.线型和字体设置线型设计:选择线条“格式” “绘图笔”字体设计:选择标签或域对象“格式” “字体”

Page 207: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

报表的默认字体设置:“报表”“默认字体”在弹出的“字体对话框中进行字体选择

分组报表设计数据分组方法:“报表”“数据分组” 出现如图的“数据分组”对话框:分组有效的前提:

1. 表中为该分组表达式建有索引。2. 对数据环境中的表对象设计 init 事件。(将该索引设为主控索引)

加上标题和总结区域页码设置在页注脚加上一个“页”标签和一个页码的域控件对象,并在即时弹出

的“报表表达式”对话框中将表达式设为_pageno(即页码)

设计者和设计日期信息

练习:在报表设计器中创建学生成绩单报表。如图所示

Page 208: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

报表格式设计提示:

Page 209: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

用命令预览和打印报表预览报表

REPORT FORM FileName1 PREVIEW [FOR <条件>]

打印报表REPORT FORM FileName1 [FOR <条件>] TO PRINTER

第二十三讲 菜单设计主要内容

认识菜单和菜单设计思想

Page 210: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

菜单设计器的使用快捷菜单及快捷菜单的使用顶层菜单及导入到表单的方法应用系统的设计思路

认识菜单和菜单设计思想认识菜单

菜单示例

菜单的作用:应用系统的操作操作界面(*评估要点:功能的系统性、操作的便捷性)设计要点:研讨课题任务,确定系统方案,规划菜单菜单分类:一般菜单、快捷菜单

菜单设计思想菜单系统的规划

Page 211: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

根据任务组织菜单; 给每个菜单项设计有意义的标题和简短提示,以方便用户使用; 根据各菜单项的使用频率排列菜单,提高查看速度; 同一个菜单列中对菜单项按逻辑的相关性分组,在各逻辑组之间放置分隔线; 为菜单和菜单项设置键盘快捷键; 对同一菜单列中菜单项的数目进行限制,可为其中的一些菜单项创建子菜单。建立菜单进入菜单设计器的方法:——项目管理器中的其它选项卡“菜单”“新建”——CREATE MENU [<菜单名>|?]

两种菜单设计器 快捷菜单设计器:设计快捷菜单(用户在选定的对象上单击鼠标右键时弹

出的菜单)。 菜单设计器:设计一般菜单(可用作应用程序的系统菜单)建立菜单步骤 发出创建菜单命令 根据需要选择菜单类型 在菜单设计器窗口建立菜单

Page 212: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

为菜单指定任务“结果”项的指定——实现用户动作的响应。在第一级菜单,结果可以是:子菜单、填充名称、过程和命令;在子菜单中,结果可以是:子菜单、菜单项#、过程和命令。建立菜单生成程序方法:“菜单”“生成”菜单文件的扩展名为.mnx菜单程序文件的扩展名为.mpr

运行及测试菜单系统 “ ”项目管理器中,其它选项卡下的 菜单 下选择菜单名“ ”运行 “ ”系统菜单, 程序 “ ”运行 “ ”运行 对话框中选择菜单“ ”运行 命令窗口,do <菜单程序文件.mpr>

菜单设计器的使用“菜单设计器”窗口的使用

菜单的框架设计菜单名称——在菜单系统中指定菜单标题和菜单项的名称使用“\<”建立菜单热键

Page 213: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

使用“\-”进行菜单项分组

菜单的功能实现设计结果——指定在选择菜单标题或菜单项时发生的动作。

各类常用文件的挂接方法文件类型 挂接命令 说明

表单 DO FORM <表单文件名>查询 DO <查询文件名> 须带上扩展名程序 DO <程序文件名>报表 REPORT FORM <报表 文 件 名 >......

PREVIEWREPORT FORM <报表文件名>...... TO PRINTER

PREVIEW:预览TO PRINTER:打印

说明:所挂接的目标文件用相对路径指定,不要给出绝对路径

选项——显示“提示选项”对话框,设置菜单项快捷键菜单运行模式设置方法:“显示”“常规选项”

Page 214: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

配置 VFP 系统菜单SET SYSMENU ON | OFF | AUTOMATIC| TO [MenuList]

| TO [MenuTitleList]| TO [DEFAULT] | SAVE | NOSAVE

在“退出”菜单项中通常需要挂接命令:SET SYSMENU TO DEFAULT

练习:设计如下菜单,并实现菜单项功能

Page 215: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

快捷菜单及其使用快捷菜单认识

适用情况:为某个对象制作快捷菜单(示例中为一表单制作的快捷菜单)本例用快捷菜单实现前后记录的定位浏览

快捷菜单设计在设计之前,首先需要确定两个问题: 为哪个对象制作快捷菜单 快捷菜单由哪些菜单项组成设计步骤:(1)发出新建菜单命令(2)在“新菜单”对话框中选择“快捷菜单”(3)菜单设计

Page 216: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

(4)为每个菜单项设置结果(5)为每个菜单项设置选项本例中给每个菜单项设置了“跳过”表达式。 前两个菜单项的“跳过”表达式为:recno()=1 后两个菜单项的“跳过”表达式为:recno()=reccount()

(5)完成保存,生成菜单程序文件将快捷菜单导入到一个表单

(1)如图示样式设计一个“课程情况浏览”表单;(2)为表单对象设计 RightClick 事件代码:

DO reco_loca.mprthisform.refresh

练习:利用菜单程序文件 reco_loca.mpr,设计如下表单

顶层菜单及导入到表单的方法项层菜单的认识

Page 217: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

示图中,菜单置在一个表单中顶层菜单的设计

与一般菜单设计类同,在生成之前多一个设置的步骤1.设计一个通常的菜单2.点击“显示”“常规选项”,在顶层表单前的复选框中打勾

3.“菜单”“生成”即完成。(命名为 menu.mpr)

顶层菜单的应用

Page 218: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

问题:将刚才制作的顶层菜单置放到表单上。表单设计步骤如下:1.按如下属性窗口进行表单的属性设置

Showwindow:2―作为顶层表单2.设计表单的 init 事件代码 do menu.mpr WITH THIS,.T.,.T.

应用系统的设计思路数据库设计

数据收集、组织预先建立一个应用系统文件夹(将系统涉及的文件放置在这个文件夹中)建立项目管理器,进行数据库与表的设计

方案设计菜单设计

根据方案在菜单设计器中设计菜单在菜单设计器中为每个菜单项输入过程或命令生成菜单程序文件(“菜单”→ “生成”)

详细设计查询的设计程序的设计表单的设计

Page 219: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

报表的设计设计主程序

复习与总结

Visual FoxPro 基本知识Visual FoxPro 基本操作题型与举例

VFP 基本知识

关系数据库数据模型(层次、网络、关系)关系运算(选择、投影、连接)数据库(数据库是一个包容器,可以包含一个或多个表、视图、到远程

数据源的连接和存储过程。)数据库管理系统(专门用于数据管理的软件,提供了数据库定义和装

入、数据检索和存取、数据控制和数据库维护等功能)掌握以上数据库的基本概念 VFP 的基础知识VFP 的运行环境VFP 的特点(全新的数据库概念、可视化的开发环境、众多的开发工具、

二种模式的程序设计)VFP 的用户界面、系统菜单、命令窗口 菜单选择、菜单约定、快捷菜单、工具条,如:表单控件工具栏、布局工具栏、表

单设计器工具栏了解 VFP 的运行环境了解 VFP 中的各种工具栏、作用以及适用情况命令窗口(命令窗口作用、命令输入与编辑)数据类型:(要求了解:用途和相关的格式)数据存储:常量(字符型、货币型、日期型、日期时间型、数值型、逻辑

Page 220: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

型) 变量 字段变量:可以取各种类型 内存变量:除通用型、备注型外的类型,双精度型字段数据用内

存变量可以保存,但自动转换成浮点型(精度不能确保)。 表达式(要求了解:各种操作符、各种类型的表达式、操作符的运

算级别)VFP函数:(凡是我们实验中用着的和我们课堂上用到的)DBF(), DBC(), EOF(), BOF(), FOUND(), RECNO(), RECCOUNT()INT、ROUND、STR、SUBSTR、ALLTRIM、SUM、AVG、COUNT 掌握 VFP 中常用的函数:有关记录指针和当前记录的函数、用于 SQL查询时的统

计函数

VFP 基本操作

表的创建和处理表的组成(.DBF)表的分类——自由表与数据库表表的基本创建方法表设计器

了解数据库表与自由表的表设计器形式和设计上的异同了解表设计器中可以设计的范畴表 记 录 的 编 辑 、 定 位 、 浏 览 显 示

( BROWSE、DELETE、PACK、LIST、DISPLAY、GO、SKIP、LOCATE/CONTINUE)

熟练掌握记录指针定位的命令以及与指针相关函数字段属性和表属性(前者包括:字段的标题、字段的注释、字段的默认值、字段

的有效性规则与有效性说明;后者包括:表的注释、记录级的有效性规则与有效性说明、触发器)

如何设置数据库表的字段属性和表属性字段的默认值和验证规则分别在何时起作用能够根据条件来设计字段的验证规则

表的索引.CDX、.IDX了解数据库表与自由表在设置索引时区别表的 SELECT-SQL查询处理掌握用 SELECT-SQL 的命令格式,并会运用该命令进行数据查询统计(分组、排序、

筛选)

Page 221: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

统计函数(COUNT、SUM、AVG、MAX、MIN)数据库的创建和处理

VFP 数据库概念数据库的创建(.DBC、.DCT、.DCX)

要求掌握:数据库的组成(定义的反复理解) 库的打开、显示与关闭(OPEN DATABASE、LIST DATABASE、CLOSE

DATABASE) 向库中添加表与移去表掌握数据库基本概念(定义的理解)和基本操作 数据库设计器的使用创建表之间的关系(永久关系:前提条件、作用方式)设置参照完整性(控制记录如何在相关表中被插入、更新或删除的一种规则)了解数据库表与自由表在设置索引时区别查询的建立和使用(.QPR,基于表或视图的动态的数据集合)本地视图的建立和使用(基于表的数据集合,仅存放在数据库中,其中数据可以

更新)了解查询与视图在数据检索、存储等方面的区别

表单的设计和应用表单文件(.SCX)表单的用途表单的数据环境表单的设计思路 基本概念 : 类、 对象、属性、事件、方法 类与对象的关系 对象的分类(数据绑定型对象与非数据绑定型对象)

了解常用的那些控件对象属于数据绑定对象,哪些不是。什么属性确定这一种绑定关系

对象与属性的关系( 常用对象的常用属性、属性的设置方法) 事件(用户事件与系统事件,常用对象的常用的事件,事件代码的设置) 方法(方法的含义,常用的方法名称)常用的控件对象:常用的属性名与事件名,基本的设计方法,容器型对象和控件

型对象熟悉常用控件的基类名称(英文),熟悉常用控件对象的常用属性、事件、方法(英文

名和意义)(要求掌握:文本框、编辑框、组合框、列表框、复选框、选项按钮、命令按钮、命令

Page 222: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

按钮组、标签、微调器)了解选项按钮组与命令按钮组中确定按钮数目的属性,按钮组与按钮之间的关系掌握常见数据处理表单的设计方法,通过事件代码的设计检验程序设计的基本能

力对象的引用表单的运行方法

子类的设计和应用类库文件(.VCX)子类设计的意义子类设计的几种方法子类的使用掌握子类设计的三种方法,以及设计的基本步骤在表单设计时子类的使用方法给出一个子类,要能看出该类所属的父类。

报表的设计和应用报表文件(.FRX)报表的用途报表设计器以及报表的设计思路了解报表设计器的默认设计区域与可以添设的设计区域

项目管理器项目文件(.PJX)项目的创建与项目管理器界面项目管理器的作用项目管理器的基本操作理解项目管理器在系统设计时的作用,了解项目管理器可组织和管理的文件类别 ,

熟练掌握项目管理器的基本操作题型与举例一、选择填空(18’)二、填空(16’)三、判断题(10’)四、表的基本操作(22’)

1. 填写表的记录指针情况2.分析下列命令组完成的功能3.写出命令或命令组完成下列任务

Page 223: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

五、简答题(10’)六、表单设计(24’)

一、 选择填空 1.两个表建立一对多关系的首要条件是二个表有共同字段,并在共同

字段上 。 A.父表、子表均建了索引 B.父表建了索引,子表无须索引 C.父表建主索引,子表建普通索引 D.父表建普通索引,子表建主索引 2.字段的有效性规则中的表达式是 表达式。 A.备注型 B.字符型 C.逻辑型 D.数值型

3.打开一个空表,分别用函数 EOF()和 BOF()测试,其结果一定是 。A..T.和 .T. B. .F.和 .F.

C. .T.和 .F. D. .F.和 .T.

二、填空1. 报表文件的扩展名为 。表单文件的扩展名为 。2.从文件组织结构上来看,索引有 索引和 索引二类,它们

的扩展名分别为 、 。3.数据库是一种包容器,其中可以容放 ,置放在数据库

中的表称为 ,与数据库无关的表称为 ,它们的扩展名都是 。

4. 表单的标题由表单的 属性确定。可通过调用表单的 方法结束表单的运行。5.根据如下表单示例图 1填空回答下列问题:6.有一个子类示例图如下,试回答如下问题:

三、判断题(在题前的括号中打√或×)1. ( )自由表与数据库表一样也置放在数据库中。

Page 224: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

2.( )使用命令GO TOP 后,记录指针总是将指向记录号为 1 的记录。3.( )用命令 SET DEFA TO 可以指定默认目录。 4.( )用命令DELETE 可以彻底删除表中的记录5.( )数据库表和自由表均可建立一个主索引。

四、 表的基本操作1. 填写表的记录指针情况(约定没有为JS表建索引,表中有10条记录):2.写出命令完成下列任务(用SQL命令与一般命令皆可)(1) 显示表 XS 中年龄不到 20岁的学生记录(2) 统计各系学生的人数,要求显示系代号、系名、学生人数三列数据(3) 显示 KC 表的结构和数据(4) 显示 CJ 表中课程代号为”01”的成绩不及格的记录(5) 给每门必修课程增加 10%的学时(6) 删除成绩表中所以成绩低于 30 分的记录(7) 统计每个学生的总学分,要求显示学号、姓名、总学分三列数据

五、表单设计 例:如下表单属于教学管理系统,其功能是实现数据查询。根据表单回

答下列问题:

Page 225: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

(1) 分析表单,写出设计步骤(2) 表单上添加了哪些对象,分别进行了怎样的属性设置(3) 表单上各个对象分别起了什么作用?(4) 如何为表单上的组合框对象设计事件代码?

VFP 实验样表

表 B-1 课程表(kc.dbf)

课 程代号

课程名 理 论学时

实 验学时

必 修课

学分 课 程备注

01 中 文Windows95

40 30 .T. 4

Page 226: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

02 Visual FoxPro

40 50 .T. 6

03 管理信息系统 12 42 .T. 5

04 数字电路 14 42 .T. 6

05 C语言 18 48 .T. 6

06 网页制作 30 20 .F. 2

07 英语 50 0 .T. 3

08 数控技术及应用

14 34 .T. 4

09 高等数学 80 0 .T. 8

表 B-2 学生表(xs.dbf)学号 姓名 性

别出生日期 电话号码 班级代

号系 代号

照片

xh xm xb csrq dhhm010111

01 周小波 男 09/28/81

025-23030443

010111

01

01011102 黄家鑫 男 03/02/8

00516-

58596405010111

01

02011101 李林 男 02/12/8

30512-

58221363020111

01

02011102 陆海涛 男 04/15/8

20510-

63529242020111

01

02011103 林一平 女 12/20/8

20511-

26578493020111

01

Page 227: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

02011104 高明 男 08/17/8

40516-

83543808020111

01

02012101 孙虹 女 07/30/8

10513-

55010092020121

01

02012102 张小韦 男 10/23/8

2025-

62573004020121

01

02012103 李明珍 女 11/02/8

30512-

88414022020121

01

02021101 蓝军 男 06/25/8

2025-

83543923020211

02

02021102 朱元元 男 04/15/8

40514-

33529403020211

02

02031101 吴欣娜 女 01/03/8

20510-

63531556020311

03

02031102 张天天 女 07/16/8

30512-

48575799020311

03

02031103 柳宝 女 06/14/8

20513-

57859349020311

03

Page 228: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

表 B-3 成绩表(cj.dbf)学号 课程

代号成绩 必

修课

学期

学号 课 程代号

成绩 必修课

学期

xh kcdh cj bxk xq xh kcdh cj bxk xq010111

0104 64.

0.F. 2 020121

0206 65.

0.F. 2

01011101

05 80.0

.F. 3 02012103

01 84.0

.F. 1

01011101

07 83.0

.F. 1 02012103

06 82.0

.F. 2

01011101

09 53.0

.F. 1 02021101

04 75.0

.F. 1

01011102

04 75.0

.F. 2 02021101

08 78.0

.F. 1

01011102

05 72.0

.F. 3 02021101

09 78.0

.F. 1

01011102

07 71.0

.F. 1 02021102

04 50.0

.F. 1

01011102

09 86.0

.F. 1 02021102

08 73.0

.F. 1

02011101

01 85.0

.F. 1 02021102

09 82.0

.F. 1

02011101

05 65.0

.F. 1 02031101

02 87.0

.F. 2

02011101

07 65.0

.F. 1 02031101

03 74.0

.F. 1

02011102

01 80.0

.F. 1 02031101

07 54.0

.F. 1

02011102

05 87.0

.F. 1 02031101

09 68.0

.F. 1

020111 01 87. .F. 1 020311 02 90. .F. 2

Page 229: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

03 0 02 002011103

05 90.0

.F. 1 02031102

03 68.0

.F. 1

02011103

07 75.0

.F. 1 02031102

07 87.0

.F. 1

02011104

05 78.0

.F. 1 02031102

09 52.0

.F. 1

02011104

07 87.0

.F. 1 02031103

02 86.0

.F. 2

02012101

01 90.0

.F. 1 02031103

03 82.0

.F. 1

02012101

06 78.0

.F. 2 02031103

07 76.0

.F. 1

02012102

01 70.0

.F. 1 02031103

09 81.0

.F. 1

表 B-4 班级表(bj.dbf)班级代号 班级名称 系代号

010111 微机应用 0101

020111 微机应用 0201

020121 电子商务 0201

020211 自动控制 0202

020311 信息管理 0203

表 B-5 系表系代号 系名

Page 230: 前言:Visual FoxPro课程介绍a.gongkong.com/tech/class/file/1139.doc  · Web view前言:Visual FoxPro课程介绍. 主要内容 Visual FoxPro课程目标. 课程学时安排和教学方式

01 计算机工程系02 机电工程系03 管理信息系