2010-5-20 Visual FoxPro 6.0程序设计 1
第 3章 利用项目管理器设计数据库和表
学习要点
1、建立项目管理器、认识项目管理器;
2、建立数据库和表的基本方法;
3、表结构的基本处理方法;
4、记录的基本处理方法。
2010-5-20 Visual FoxPro 6.0程序设计 2
第 3章 利用项目管理器设计数据库和表
3.1 建立项目管理器
3.2 数据库设计方法
3.3 通过“数据”进行数据库设计
3.4 设计数据表
3.5 记录基本处理方法
小结
返 回 退 出
2010-5-20 Visual FoxPro 6.0程序设计 3
3.1 建立项目管理器
3.1.1 项目管理器
3.1.2 用项目管理器构造应用程序
3.1.3 添加文件到一个项目
3.1.4 生成应用程序
返 回 退 出
2010-5-20 Visual FoxPro 6.0程序设计 4
3.1.1 项目管理器
项目管理器 是 VFP应用程序开发过程中所有对象与数据的“控
制中心( Control Center)”
项目管理器的创建方法,
1、利用 VFP系统菜单上的 【 文件 】 中的 【 新建 】 菜单项进行创
建,并且可以使用创建项目管理器的向导。
2、在 VFP的命令窗口中通过输入命令来创建项目管理器。
方法一,利用菜单创建项目 Gxglxt。
格式一, CREATE PROJECT <项目文件名 |?>
方法二,利用命令创建项目管理器,
参数描述,<项目文件名 >:指定项目的文件名。如果没有为文
件指定扩展名,则 VFP自动指定,PJX为扩展名。
<?>,打开“创建”对话框,提示为正在创建的项目文件命名。
2010-5-20 Visual FoxPro 6.0程序设计 5
项目管理器
【 新建 … 】,创建新文件
命令按钮。
【 修改 … 】,修改项目管
理器中存在的文件。
【 添加 … 】,添加已存在
的文件到项目管理器。
【 运行 … 】 或 【 打开 】 或 【 关闭 】 或 【 浏览 】,运行“文档”、“代码”和
“其它”选项卡中文件,打开、关闭数据选项卡中的数据库、表等,关闭(或
称为折叠)项目文件中某一展开的选项卡显示。
【 移去 … 】,将所选择的
文件移出项目文件或从磁
盘上删除。
【 连编 … 】,建立应用程
序(,APP)或可执行
(,EXE)程序。
折叠或展开项目管理器 。
2010-5-20 Visual FoxPro 6.0程序设计 6
项目管理器
全部选项卡
单击折叠或展
开按钮将项目
管理器折叠 。
从项目管理
器中拖下后
的“全部”
选项卡。
从项目管理
器中拖下后
的“其它”
选项卡。
从项目管理
器中拖下后
的“代码”
选项卡。
从项目管理
器中拖下后
的“数据”
选项卡。
从项目管理
器中拖下后
的“文档”
选项卡。
从项目管理
器中拖下后
的“类”选
项卡。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 7
3.1.2 用项目管理器构造应用程序
构造一个应用程序应注意以下问题,
1,首先应设置起始点
应用程序都应该有一个主文件作为其执行的起始点, 它可以是包含在一个项目
中的任何程序, 表单或查询文件, 然后从 【 项目 】 菜单中选择 【 设置主文件 】
来建立应用程序的起始点 。 在项目中, 只有一个文件能设置成为主文件
建立一个主程序的一般步骤如下:
■安装应用程序的环境
■确定初始用户界面
■建立事件循环( Event loop)
■当应用程序退出时恢复环境。
【 例 3-1】 主程序示例,
DO Setup &&安装环境
DO MainMenu.mpr &&调用主菜单显示初始用户界面
READ EVENTS &&建立事件循环
DO cleanup &&恢复环境
注意,在 MainMenu.mpr中应加一个退出菜单项,以便发出 CLEAR EVENTS命
令防止死循环。
2010-5-20 Visual FoxPro 6.0程序设计 8
2、安装应用程序环境
在安装应用程序环境时应注意,在安装源程序中,应先将初始环境存贮起来,
然后启动一个应用程序特定的环境,它包括初始化变量、建立默认路径、引
用外部库( External library)和过程( procedure)文件等。
3,显示初始界面
初始用户界面可以是一个开始屏幕、菜单栏、表单或者任何其它组件。可以
在主程序中通过使用 DO命令去运行一个菜单,或者通过 DO FORM去运行一
个表单,或者通过设置一个表单为主程序来初始化用户界面。
4、控制事件循环
一旦环境安装并且已经显示初始界面后,应该准备建立一个事件循环去等待
用户交互。控制事件循环的方法是:发出 READ EVENTS命令启动处理事件;
发出 CLEAR EVENTS命令去停止处理事件。
5,恢复原始环境
为了恢复存贮变量的原始值, 可用宏替换它们进原始 SET命令 。 例如, 如果已
在安装应用程序环境时已存贮 SET TALK设置的内容进入了 CtalkVal变量:
CtalkVal=SET(“Talk”)
如果在使用中改变了, TALK”的设置, 当要恢复其初始设置时, 则在恢复原
始环境时可以用下一条命令去恢复:
SET TALK &CtalkVal
返 回
2010-5-20 Visual FoxPro 6.0程序设计 9
3.1.3 添加文件到一个项目和连编项目
一旦建立了应用程序的框架后,便可以准备将其它文件 添加 到项目中 。添加文
件到项目中一个好的方法是去 连编 此项目。
为添加一个文件到项目管理器中,也可以先在项目管理器中选择要添加的文件
类别,在单击项目管理器中的 【 添加 … 】 按钮。
若要 连编 项目,可在项目管理器中设置主文件后再选择 【 连编 】 。
当向项目中添加组件时,应该重复项目
的连编和运行。如果没有在“连编选项”
对话框中的“操作”选项组中选择“重
新编译所有文件”,那么,在连编时只
编译自上次连编以后修改过的文件。
连编选项对话框
返 回
2010-5-20 Visual FoxPro 6.0程序设计 10
3.1.4 生成应用程序
要从项目管理器创建一个最终的文件,需要把它连编为一个 应用
程序文件 或 可执行文件 。
连编应用程序步骤:
第 1步:设置主文件;
第 2步:在“项目管理器”中选择 【 连编 】 按钮;
第 3步:在弹出的“连编选项”对话框中的“操作”选项组中选中
“连编应用程序”单选项;
第 4步:单击 【 确定 】 。
连编可执行文件步骤:
第 1步:设置主文件;
第 2步:在“项目管理器”中选择 【 连编 】 按钮;
第 3步:在弹出的“连编选项”对话框中的“操作”选项组中选中
“连编可执行程序”单选框;
第 4步:单击 【 确定 】 。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 11
3.2 数据库设计方法
3.2.1 数据库设计步骤
3.2.2 数据需求分析
3.2.3 数据库表确定
3.2.4 数据库表字段确定
返 回 退 出
3.2.5 数据库表间关系设定
3.2.6 设计求精
2010-5-20 Visual FoxPro 6.0程序设计 12
3.2.1 数据库设计步骤
数据库设计步骤:
第 1步,确定建立数据库的目的,这有助于确定需要 VFP保存哪些信息;
第 2步,确定需要的表;
在明确了建立数据库的目的之后,就可以着手把信息分成独立的主题,例如
,Student”(学生情况)或,Grade”(学生成绩)等。每个主题都可以是数据
库中的一个表。
第 3步,确定所需字段;
确定在每个表中保存哪些信息。在表中,每类信息称为一个字段,浏览表时在
表中显示为一列。例如,在 Student表中,可以有这样的字段:“学号”、“姓
名”、“性别”等。
第 4步,确定关系;
分析每个表,确定一个表中的数据和其它表中的数据有何关系。必要时,可以
在表中加入字段或创建一个新表来明确关系。
第 5步,设计求精。对设计进一步分析,查找其中的错误。创建表时,在表中
加入几个示例记录,看能否从表中得到所想要的结果。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 13
3.2.2 数据需求分析
这一步是建立数据库的关键,也就是说必须清楚地了解最终的
需求是什么?有一些什么样的信息要保存?以后需要如何对数
据进行处理?等等
建立 Gxglxt数据库需求分析
■ 首先列出需数据库回答的问题清单。如:本学期每个人每门
课的期末考试成绩是多少?有哪些人的哪些课程不及格?哪些
学生的学业成绩达到了获奖学金的标准?哪些学生在考试中哪
门课程舞弊了?等等。
■其次收集所有的表单和报表。这些表单和报表包含了应该由
数据库提供的各种信息。如期末考试成绩需要录入哪些信息等。
■最后,期末考试成绩册如何打印等等。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 14
3.2.3 数据库表确定
确定数据库表是数据库设计过程中技巧性最强的一步。
应注意以下几个方面的问题:
■一个表只保存一个主题的内容;
■同一信息只保存一次,这将减少出错的可能性;
■防止删除有用信息。
以建立 Gxglxt数据库中的表为例:
在学习成绩表中,每位学生所学的课程不属于一位学生,因而
需要有一个学习课程表。同样,一个班级不只一名学生,要有
一个班级主题的表等。
Student表和 Grade表都与学生有关,但关于学生个人情况的信
息保存在 Student表中,Grade表中只保存与成绩有关的信息。
当一个班的学生毕业后,可能要删除这个班级,但不能删除这
个专业,最好的方法是建立一个“专业( Specialty)”表。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 15
3.2.4 数据库表字段确定
确定表字段的几点技巧:
■每个字段直接和表的主题相关 ;
■不要包含可推导得到或通过计算可以得到的字段 ;
■收集所需的全部信息 ;
■以最小的逻辑单位存储信息。
使用主关键字段
■ VFP不允许在主关键字中有重复值或 null值。因此,不能选择
包含有这类值的字段作为主关键字。
■因为要用主关键字的值来查找记录,所以它不能太长,以方便
记忆和键入。主关键字可由一定长度的字母和数字组成,或是某
一范围内的值。
■主关键字的长度直接影响数据库的操作速度,因此,在创建主
关键字时,该字段值最好使用能满足存储要求的最小长度。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 16
3.2.5 数据库表间关系设定
VFP是一个关系型数据库管理系统。在每个不同的表中存储的
数据之间有一定的关系。通过在这些表之间定义关系后,可以
利用这些关系来查找数据库中有关的信息。
表之间有三种关系:即 一对一关系、一对多关系和多对多关系
■在一对一关系中 ①如果两个表有相同的主题,可在两个表中
使用同样的主关键字字段,并以此建立一对一关系。②如果两
个表有不同的主题及不同的主关键字,选择一个表(任意哪个
表)把它的主关键字放到另一个表中作为外部关键字。
■在一对多关系中要建立这样的关系,就要把关系中“一方”
的主关键字字段添加到“多方”的表中。在关系中,“一方”
用主关键字或候选索引关键字,而“多方”使用普通索引关键
字。
■在多对多关系中向 VFP正确指定关系之前,需要改变数据库
的设计,即创建第三个表,把多对多关系分解为二个一对多关
系。这第三个表称作“纽带表”,纽带表可能只包含这两个表
的主关键字,也可能包含其它信息。 返 回
2010-5-20 Visual FoxPro 6.0程序设计 17
3.2.6 设计求精
对所设计的表分析,查找是否存在如下问题:
■表中是否带有大量的并不属于这个主题的字段?
■表中是否有些字段由于对很多记录不适用而始终保持空白?
■是否有大量的表包含了同样的字段?
■是否遗忘了字段?是否有需要的信息没包括进去?如果有,
它们是否属于已创建的表?如果不包含在已创建的表中,那就
需要另外创建一个表。
■是否为每个表选择了合适的主关键字?在使用这个主关键字
查找具体记录时,它是否很容易记忆和键入?
■是否有字段很多、记录却很少的表,而且许多记录中的字段
值为空?
查找到存在的问题后,就要修改表的结构,以改进设计方案。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 18
3.3 通过“数据”选项卡进行数据库设计
3.3.1 数据字典的作用
3.3.2 将表加入到数据库
返 回 退 出
2010-5-20 Visual FoxPro 6.0程序设计 19
3.3.1 数据字典的作用
■ 主关键字和候选索引关键字 。
■ 数据库中表间的永久关系 。
■ 长表名和长字段名 。
■ 各字段的标题, 日后它们作为标题头显示在, 浏览, 窗口和
表格中 。
■ 字段的默认值 。
■ 表单中使用的默认控件类 。
■ 字段的输入掩码和显示格式 。
■ 字段级规则和记录级规则 。
■ 触发器 。
■ 存储过程 。
■ 与远程数据源的连接 。
■ 本地视图与远程视图 。
■ 对每个字段, 表和数据库的注释 。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 20
3.3.2 将表加入到数据库
1、创建数据库
2、将表加入到数据库
要将一个或多个表加入到数据库中时,可以在“项目管理器”
中选择,数据,选项卡,再从列表中选择,数据库,项下的
,表,,最后选择 【 添加 】 按钮。
要添加的表必须具备下列条件:
■该表是一个有效的,DBF文件;
■除非为表指定一个唯一的长文件名,否则表不允许与打开的
数据库中已有的表同名。
■表不能同时放在另一个数据库中。
要加入表的数据库必须具备下列条件:
■必须以独占方式打开。要想独占地打开一个数据库,在使用
OPEN DATABASE命令时加入 EXCLUSIVE子句;
■不包含在事务中。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 21
3.4 设计数据表
3.4.1 建立表前的准备
3.4.2 建立表基本结构
3.4.3表结构的基本处理方法
返 回 退 出
2010-5-20 Visual FoxPro 6.0程序设计 22
3.4.1 建立表前的准备
在建立表结构以前,首先应该根据用户的需求,明确所要创建
的表中应该包含哪些字段,每个字段的名称、类型和宽度。
创建 Gxglxt中的 Student(学生情况)表
基本情况应包括:学号、姓名、性别、出生日期、班级、电话
等内容 。结构如下:
表中项目名 字段名称 字段类型 字段宽度 小数位
学号 学号 C 9
姓名 姓名 C 8
性别 性别 C 2
出生日期 出生日期 D 8
班级 班级 C 10
宿舍 宿舍 C 5
电话 电话 C 8
说明 说明 M 4
返 回
2010-5-20 Visual FoxPro 6.0程序设计 23
3.4.2 建立表基本结构
使用命令建立表结构:
格式,CREATE <表文件名 >
功能,建立一个表文件。说明:输入命令后,按 Enter键,屏幕
上会出现“表设计器”对话框,利用该对话框即可建立表的结
构。
参数描述,<表文件名 >指定要创建的表的名称。
说明,输入命令后,按 Enter键,屏幕上会出现“表设计器”对
话框,利用该对话框即可建立表的结构。
■建立表结构是指原来磁盘上没有这个表文件,通过 CREATE
命令的执行,在磁盘上建立起一个新的表文件,若定义了备注
型字段,则同时建立了一个,FPT为扩展名的表备注文件。
■若在文件名前指定了驱动器标识符,则文件建立在指定的驱
动器上,否则建立在当前驱动器上。
■不指定文件扩展名时,缺省扩展名为,DBF。
2010-5-20 Visual FoxPro 6.0程序设计 24
■ 若磁盘上存在这个文件或文件重名,系统显示一个警告对话框,
提示是否要改写表。如果需要改写,则选择 【 是 】,否则选择
【 否 】 。
■不要用 A-J单个字母作为表文件名,因为他们是专门用于工作区
别名的。
使用命令创建 Student.dbf示例:
使用菜单创建表
在 VFP的系统菜单上单击 【 文件 】 |【 新建 】 菜单项便可打开“新
建”对话框(也可以利用键盘操作:先按 Alt+F组合键,再按
Ctrl+ N键,也可以直接按 Ctrl+N键)。在“新建”对话框中,选
择“表”单选项,然后再单击 【 新建文件 】 按钮进入到的“打开”
对话框。在这个对话框中首先是(关键也是)选择一个表,或为
表新取一个文件名,然后按 【 保存 】 按钮,VFP会进入“表设计
器”。
进入表设计器后的操作与上相同。
使用菜单创建表示例
2010-5-20 Visual FoxPro 6.0程序设计 25
使用项目管理器创建表结构
在项目管理器的“数据”选项卡中选择“表”,然后单击 【 新
建 】 |【 新建表 】 按钮。在出现的“创建”对话框中输入所要创建
的表的文件名,并选择存储路径,然后选择 【 保存 】,将打开表
设计器。
使用项目管理器创建表结构示例
显示格式:指定字段值显示时的格式 。
显示输入掩码:指定字段值在输入时的格式 。
显示标题:指定字段名在显示时所用的字符串 。
字段有效规则:指定字段在进行结构修改时应该满足的条件 。
字段有效性信息:指定字段在结构修改时提示字段级规则的信息 。
字段有效性默认值:为字段指定默认值 。
记录有效性规则:指定在输入记录时所输入的数据应满足的条件 。
记录有效性信息:当输入的数据不满足条件而又试图将数据保存
时所出现的提示信息 。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 26
3.4.3 表结构的基本处理方法
功能,显示当前表结构的有关信息。包括表文件名、记录个数、
最后一次修改日期、各字段的字段号、字段名、类型、宽度和小
数位,一条记录的字节总数。
参数说明:
[TO PRINTER]子句表示将操作结果送到打印机。后面可以接
[PROMPT]参数,这一参数的在执行打印命令之前,先打开“打
印设置”对话框,用以对打印机有关参数(如纸张大小、打印范
围等)进行设置。 [PROMPT]参数只能紧接 TO PRINTER命令。
[TO FILE]子句表示将操作结果输出到指定的磁盘文件中。
1、显示表结构
格式一,LIST STRUCTURE [TO PRINTER[PROMPT] /TO
FILE<文本文件名 >]
格式二,DISPLAY STRUCTURE [TO PRINTER[PROMPT]
/TO FILE<文本文件名 >]
2010-5-20 Visual FoxPro 6.0程序设计 27
LIST STRUCTURE和 DISPLAY STRUCTURE命令的区别
DISPLAY STRUCTURE在每显示一屏信息后暂停,等待用户按任
意一键后继续显示;
LIST STRUCTURE显示信息时没有周期性暂停,而是连续向下显
示,直到显示完毕。
显示 Student表的结构
USE Student
LIST STRUCTURE
执行上面的命令后,屏幕显示如下:
2010-5-20 Visual FoxPro 6.0程序设计 28
2,修改表文件的结构
格式,MODIFY STRUCTURE
功能,显示表设计器,修改当前表文件的结构。
说明,如果没有在当前选定工件区打开表,则显示“打开”对话
框,允许用户从中选择一个要修改的表。
对表结构的更改包括:添加和删除字段;修改字段名称、大小和
数据类型;添加、删除或修改索引标识,以及指定是否支持
NULL值等。
(1)、删除字段
第一步:将光标移到要删字段的任一位置或单击该字段的任意位
置;
第二步:按 Ctrl+D删除该字段或单击 【 删除 】 命令按钮;
第三步:按 Ctrl+W或单击 【 确定 】 按钮存盘,返回命令窗口。
说明:若删除了某些字段,对应字段的内容也丢失。
2010-5-20 Visual FoxPro 6.0程序设计 29
(2)、插入新字段
第一步:将光标移到要插入字段的下一行的任一位置或单击要插
入字段的下一字段;
第二步:按 Ctrl+I或单击 【 插入 】 按钮,便可插入一个新的空字
段,在空字段的位置上可以填入新字段名称、类型、宽度及小数
位。
第三步:按 Ctrl+W或单击 【 确定 】 按钮存盘,返回命令窗口。
(3)、修改字段名、宽度、类型和小数位
将光标移到要修改处直接进行修改。
① 一个字段有四个结构参数项, 每次只能修改其中的一项 。 如果
需要修改其中的多项, 为了不丢失数据, 应分为多次进行修改,
每次修改存盘后继续修改, 直到结束 。
② 修改字段类型时, 可能造成数据丢失 。
③ 无论进行何种修改, 退出 MODIFY STRUCTURE命令的方法与
退出 CREATE命令环境的方法相同 。
2010-5-20 Visual FoxPro 6.0程序设计 30
3、复制表结构
格式,COPY STRUCTURE TO <表文件名 > [FIELDS <字段名表
>]
功能:将当前打开的表文件结构的部分或全部复制为 <表文件名 >
所指定的一个表的结构。
参数描述:
<表文件名 >,指定生成新表结构的表文件名。
FIELDS <字段名表 >,指定在新表中包含的字段及顺序。
说明:复制生成的表文件中的结构部分包含哪些字段,以及字段
先后顺序都由 FIELDS <字段名表 >所规定。若省略该子句,则按
字段原来的顺序复制全部字段。
4、建立表结构的其它方法
( 1)生成表结构文件
格式,COPY STRUCTURE TO <表结构文件名 > EXTENDED
2010-5-20 Visual FoxPro 6.0程序设计 31
功能,它将当前表的结构复制生成一个特殊的表文件,即表结构
伸展文件。
将 Student的结构复制生成一个表结构文件 studstr,然后用显示
其结构
USE Student
COPY STRUCTURE TO studstr EXTENDED
USE studstr
LIST STRUCTURE
2010-5-20 Visual FoxPro 6.0程序设计 32
( 2)将表结构文件还原成表结构
格式,CREATE <表文件名 > FROM <表结构文件 >
功能,将表结构文件还原成为普通表文件。新建的表文件是一个
只有结构部分而没有记录的表结构框架。
将上例中的 studstr表结构文件还原生成一个新的表文件 Student1
CREATE Student1 FROM studstr
USE Student1
LIST STRUCTURE
返 回
2010-5-20 Visual FoxPro 6.0程序设计 33
3.5 记录基本处理方法
3.5.1 表的打开与关闭
返 回 退 出
3.5.2 录入记录
3.5.3 记录指针定位
3.5.4 在表中插入记录
3.5.5 显示表中的记录
3.5.6 修改表中的记录
3.5.7 删除记录
2010-5-20 Visual FoxPro 6.0程序设计 34
3.5.1 表的打开与关闭
使用任何一个表以前,都必须首先打开表。
格式,USE <表文件名 > [EXCLUSIVE] [SHARED]
功能,打开指定的表文件。
参数描述:
<表文件名 >,指定要打开的表的名称。
[EXCLUSIVE],在网络上以独占的方式打开表。
[SHARED]:在网络上以共享的方式打开表。
■打开表时若表含有备注型字段,则 FPT文件也同时被打开。
■每个表被打开时均赋于一个别名。若省略 ALIAS<别名 >,则其
别名与主文件名相同。
■若不选择任何参数,表示关闭当前工作区中已打开的表。
■在任一时刻,每个工作区最多允许打开一个表。如果指定工作
区已有表打开,在打开新的表时,系统总是先自动关闭原来打
2010-5-20 Visual FoxPro 6.0程序设计 35
打开的表。
■打开表时,记录指针指向第一条记录。
3.5.2 录入记录
表的数据录入有多种方法:第一种方法是在表结构建立时录入数
据;第二种方法是在表结构建成并存盘关闭了“表设计器”之后,
利用命令向表中追加记录。
格式,APPEND [BLANK]
参数描述:
[BLANK]:在当前表的末尾添加一条空记录。
功能:在表的末尾添加一个或多个新记录。
说明:
■ 可以在只有表结构而没有记录的空表中添加记录, 也可以在已
经录入数据的表中的尾部追加记录;
■ 它可以向当前表的尾部追加一条或多条新记录 。 省略可选项,
返 回
2010-5-20 Visual FoxPro 6.0程序设计 36
则在当前表的尾部追加任意新记录,追加记录的方法及操作与用
CREATE命令建立表时输入数据的方法相同;
■当发出 APPEND或 APPEND BLANK命令,并且在选定工作区
中没有打开的表时,将显示一个“打开”对话框,我们可以在对
话框中选择一个要添加记录的表。 APPEND命令打开一个编辑窗
口,我们可以在其中输入一个或多个新记录。增加新记录后,
VFP将自动修改打开的所有索引。
打开浏览窗口后通过追加方式添加记录
方法:在项目管理器中选定一个要添加记录的表,然后单击 【 浏
览 】,然后在系统菜单中选择 【 显示 】 |【 追加方式 】 。
添加记录的数据
学号 姓名 性别 出生日

班级 宿舍 电话 说明
9 9 04
1001
李娟 女 10/17/8
0
99 电子 4 - 20
1
2356122
9904
3010
王坚 男 04/21/8
1
99 机械 3 - 30
5
2356300
9804
0522
谢少文 男 02/23/8
0
98 电子 3 - 30
4
2356404
9805
2031
欧阳南 女 02/07/8
1
98 计算机 4 - 41
1
2356188
9906
0124
李磊 男 10/04/8
0
99 英语 2 - 22
2
2356234
9904
3021
王向阳 男 03/29/8
1
99 机械 3 - 31
0
2356333
返 回
2010-5-20 Visual FoxPro 6.0程序设计 37
3.5.3 记录指针定位
记录定位就是将记录指针移到指定的记录上,记录指针指向的记
录称为当前记录。 VFP提供了下列 绝对定位 和 相对定位 两类命令。
1、记录指针的绝对定位
格式一,GOTO [RECORD <数值表达式 > ] /TOP/BOTTOM
格式二,GO [RECORD <数值表达式 > ] /TOP/BOTTOM
格式三,<数值表达式 >
功能,将记录指针直接定位到指定的记录上。
参数描述,
<数值表达式 >,指定一个物理记录号,记录指针移至该记录上。
TOP,将记录指针定位在表的第一个记录上。
[BOTTOM],将记录指针定位在表的最后一个记录上。
说明,RECORD可省略。 <数值表达式 >的值必须大于 0,且不大
于当前表文件的记录个数。
2010-5-20 Visual FoxPro 6.0程序设计 38
2、记录指针的相对定位
相对定位与当前记录有关,它是把记录指针从当前位置作相对移
动。
格式, SKIP [<数值表达式 >]
功能,将记录指针向前或向后作相对若干条记录的移动。
参数描述,
<数值表达式 >,指定记录指针作相对移动的记录数据。
说明:
1、移动的记录数等于 <数值表达式 >的值,其值为正数时,记录
指针向下移动,当 <数值表达式 >是负数时,记录指针向上移动。
2、省略选择项 <数值表达式 >,约定为向下移动一条记录,即
SKIP 等价于 SKIP 1。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 39
3.5.4 在表中插入记录
1,INSRET命令
格式, INSERT [BLANK] [BEFORE]
功能,在当前记录之前或之后插入一条或多条新记录。
参数描述:
选择 [BEFORE]子句,新记录插在当前记录之前,当前记录和其
后的记录向后顺序移动;否则插在当前记录之后,当前记录之后
的记录顺序向后移动。
选择 [BLANK]子句,则插入一条空记录。
说明:
1、省略所有可选项,则在当前记录之后插入新记录。
2、在 VFP中,如果数据库具有表缓冲或行缓冲功能,则 INSERT
命令不能用于该数据库的表;对于具有参照完整性规则的表也不
能使用 INSERT命令 。
2010-5-20 Visual FoxPro 6.0程序设计 40
2,INSERT—— SQL命令
格式一,INSERT INTO <表文件名 >[(<字段名 1> [,<字段名
2>…])] VALUES (< 表达式 1>[,<表达式 2>…])
格式二,INSERT INTO <表文件名 > FROM ARRAY <数组名 >/
FROM MEMVAR
功能,在表尾追加一个包含指定字段值的记录。
参数描述:
<表文件名 >,指定要追加记录的表文件名。 <表文件名 >中可以
包含路径,也可以是一个名称表达式。
[(<字段名 1> [,<字段名 2>…])], 指定要插入值的字段名。
[VALUES (<表达式 1>[,<表达式 2>…])], 新插入记录的字段值。
[FROM ARRAY <数组名 >],指定一个数组,数组中的数据将被
插入到新记录中。
FROM MEMVAR,把内存变量的内容插入到与它同名的字段中。
说明:
2010-5-20 Visual FoxPro 6.0程序设计 41
1、如果 <表文件名 >指定的表没有打开,则 VFP先在一个新工作
区中以独占方式打开该表,然后再把新记录追加到表中,此时并
未选定该工作区,选定的仍然是当前的工作区。
2、如果省略了 VALUES子句后的字段名,那么,必须按照定义
表结构时的顺序来指定字段值。
3、使用 FROM ARRAY <数组名 >子句时,从 <数组名 >指定数组
的第一个数组元素开始,数组中的每一个元素的内容依次插入到
新记录的对应字段中。第一个数组元素的内容插入到新记录的第
一个字段,第二个元素的内容插入到新记录的第二个字段,依此
类推。
4、当使用 FROM MEMVAR子句时,如果某一字段不存在同名的
内存变量,则该字段为空。
使用 INSERT ——SQL命令向 Student表中追加一条新记录
学号 姓名 性别 出生日期 班级 宿舍 电话
99045002张中强 男 03/22/80 99电子 3-311 2356306
2010-5-20 Visual FoxPro 6.0程序设计 42
INSERT INTO Student(学号,姓名,性别,出生日期,班级,宿舍,;
电话 ) VALUES("99045002","张中强 ","男 ",{^1980/03/22},;
"99电子 ","3-311","2356306")
3、从另一个表中成批追加记录
格式,APPEND FROM <表文件名 >/? [FIELDS <字段列表 >]
[FOR <条件 >]
功能,从一个表中读入记录,追加到当前表的尾部。
参数描述:
<表文件名 >,指定要向当前表中追加记录的数据源。
[<? >],显示“打开”对话框,从中选择从哪个表中读入数据。
[FIELDS <字段列表 > ],指定添加哪些字段数据。
[FOR <条件 >],为当前选定表中每一条 <条件 >为“真”的记录追
加新记录,直至达到当前选定表的末尾。如果省略 FOR子句,则
整个源文件记录都追加到当前表中。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 43
3.5.5 显示表中的记录
格式一,LIST [OFF] [FIELDS <字段名列表 >] [<范围 >] [FOR <
条件 >] [WHILE <条件 >] [TO PRINTER [PROMPT] / TO FILE
<文本文件名 >]
格式二,DISPLAY [OFF] [FIELDS <字段名列表 >] [<范围 >]
[FOR <条件 >] [WHILE <条件 >] [TO PRINTER [PROMPT] /
TO FILE <文本文件名 >]
功能,显示当前表中的全部或部分记录和数据。
参数描述:
[OFF],使用 OFF时,不显示记录号,否则显示记录号。
[<范围 >],范围为可选项,选择时为 ALL,RECORD( N)、
[ NEXT( N),REST中的一个参数,表示记录显示的范围。
FIELDS <字段名列表 >,若省略 <字段名表列 >,则显示当前表
中的所有字段,否则显示指定的字段。如果备注字段名出现在 <
字段名表列 >中,则它的内容按 50个字符列宽显示,
2010-5-20 Visual FoxPro 6.0程序设计 44
[FOR<条件 >/WHILE<条件 >],该子句用于有选择地显示某些记
录,省略时则显示 <范围 >限定的全部记录。
[TO PRINTER [PROMPT] / TO FILE <文本文件名 >],指定记
录列表的输出方向。 TO PRINTER [PROMPT]指定输出到打印机。
[PROMPT]参数的使用方法同前。 TO FILE <文本文件名 >指定输
出到所指定的文本文件中。
LIST和 DISPLAY的区别:
(1)DISPLAY每显示一屏记录时暂停一次,按任意键后继续显示
剩余的记录,而 LIST没有周期性暂停,连续向下显示,直到记录
显示完毕为止。
(2)若省略所有可选项,则 DISPLAY命令显示当前记录,即范围
为 NEXT 1,而 LIST命令显示全部记录,即范围为 ALL。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 45
3.5.6 修改表中的记录
1、全屏幕编辑命令
(1)利用菜单浏览和修改表中的数据
第一步:在项目管理器中选择 【 数据 】 选项卡
第二步:
在数据库
中选择一
个表
第三步:
单击项目
管理器中
的 【 浏览 】
按钮
2010-5-20 Visual FoxPro 6.0程序设计 46
VFP系统打开全屏幕浏览窗口
第四步:在浏览窗口中修改数据






当前记录标志
删除标志位




第五步:修改结束后单击
关闭按钮关闭浏览窗口
在浏览窗口中可以去除、恢复垂直分隔线,也可以改变字段的
显示宽度。
2010-5-20 Visual FoxPro 6.0程序设计 47
( 2)利用命令浏览和修改表中的数据
格式,BROWSE [FIELDS <字段名表 >] [LOCK <数据型表达式
>] [LAST] [FOR <逻辑型表达式 >]
功能,在屏幕上打开一个浏览窗口,在窗口中显示表的记录。
参数描述:
[Fields<字段名表 >],指定在浏览窗口中显示的表的字段。
LOCK <数据型表达式 >,将浏览窗口一分为二,指定在左窗口
中显示的字段数。
LAST,按最后一次关闭浏览窗口的方式打开浏览窗口。
FOR <逻辑型表达式 >,指定在浏览窗口中显示的记录所要求满
足的条件。
说明:
1,BROWSE命令可以带有很多任选项,命令格式中只介绍了
BROWSE命令的最基本的任选项。
2010-5-20 Visual FoxPro 6.0程序设计 48
2、在 <字段名表 >中,除了可以使用表所定义的字段以外,还可
以使用计算字段。
计算字段, 就是由表中的字段组合成的合法的 VFP的表达式。
注意,计算字段的名称不能与当前表中的字段名同名,长度不
能超过 10个字符。计算字段是只读的,它的值随着组成计算字段
的表中的字段值的变化而变化。
计算字段的格式为,<计算字段名 >=<表达式 >
BROWSE FIELDS NAME_BIRTH=姓名 +":"+性别 +":"+DTOC(出
生日期 )+"出生 "
当执行上述命令后
屏幕显示结果
2010-5-20 Visual FoxPro 6.0程序设计 49
在计算字段后面使用,H参数,窗口中显示中文字段名
BROWSE FIELDS NAME_BIRTH=姓名 +":"+性别 +":"+ ;
DTOC(出生日期 )+"出生 ":H="姓名和出生日期 ",宿舍,电话
执行上述命令后,屏幕显示结果
计算字段指定
的中文名
计算字段的值







2010-5-20 Visual FoxPro 6.0程序设计 50
2、记录值替换命令
格式,REPLACE <字段名 1> [ADDITIVE] [,<字段名 2> WITH <
表达式 2> [ADDITIVE]…] [< 范围 >] [FOR <条件 >] [WHILE <条
件 >]
功能, 不进入全屏幕编辑方式,根据命令中指定的条件和范围,
用表达式的值去更新指定字段的内容。
参数描述:
<字段名 1>,指定要替换值的字段。
WITH <表达式 1>, 指定用来进行替换的表达式或值。
<范围 >,指定进行替换时的记录范围。
FOR <条件 >, 指定要进行替换字段值的记录应满足的条件。
WHILE <条件 >,当记录的条件不满足时结束替换。用以按条件
中的字段建立了索引的表。
说明:
WITH后面的表达式的类型必须与 WITH前面的字段类型一致 。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 51
3.5.7 删除记录
在 VFP中删除记录是分为两步来进行的,第一步是将要删除的记
录做上删除标记,第二步才是将记录真正从表是彻底删除。
1、逻辑删除(为记录做上删除标记)
格式,DELETE [<范围 >] [FOR <条件 >] [WHILE <条件 >]
功能,对当前表文件中指定的记录做删除标记。
GO 7
DELETE
GO 4
DELETE NEXT 3
LIST
执行上述命令后屏幕显示结果:
2010-5-20 Visual FoxPro 6.0程序设计 52
2、物理删除(清除带有删除标记的记录)
格式,PACK [DBF] [MEMO]
功能,省略选择项,该命令将从当前表中删除所有带删除标记的
记录。选择 DBF,表示仅清除逻辑删除的记录而不压缩备注文件,
选择 MEMO表示仅压缩备注文件中无用的空间而不清除被逻辑删
除的记录。不带任何选择项时,PACK命令既清除逻辑删除的记
录,又压缩备注文件。
说明,用 PACK命令删除的记录是不可被恢复的。所以在使用
PACK命令前一定要检查删除标记是否加的正确。
例:
PACK
LIST
执行上述命令后屏幕显示的结果:
注意:在进行这一步操作前先备份数据
2010-5-20 Visual FoxPro 6.0程序设计 53
3,恢复带删除标记的记录
格式,RECALL [<范围 >] [FOR <条件 >] [WHILE <条件 >]
功能,恢复当前表中带删除标记的记录,即去掉删除标记,*”
号。当省略所有的选项时,仅恢复当前记录。
(先从备份的数据中恢复 Student表中的数据 )
RECALL ALL
BROW
执行上述命令后屏
幕显示的结果
4,清除所有记录 格式,ZAP
功能,从当前表中清除全部记录,仅保留表的结构。
ZAP命令与 DELETE ALL 和 PACK两条命令执行的结果相同,区
别在于 ZAP执行的速度更快,当表中的记录很多时尤为明显。
返 回
2010-5-20 Visual FoxPro 6.0程序设计 54
小结
返 回
1、可以用菜单方式和命令方式 CREATE PROJECT创建项目管理器。
2、在项目管理器中通过 【 连编 】,可以创建应用程序和可执行文件。
3、加入项目管理器的表可以享受“数据字典”的功能。
4、创建一个数据库可以分为五步:确定建立数据库的目的;确定需要的表;
确定每个表所需字段;确定表间的关系关系;设计求精。
5、建立表前要做好准备,将每个表的字段名、类型、宽度、小数位、等以表
格的形式进入充分的描述。
6、可以通过项目管理器和使用 CREATE命令建立表,也可以通过 COPY
STRUCTURE命令从其它表中复制表结构,还可以使用 CREATE带 FROM子句
从一个表结构文件中得到表结构。
7、一个表由表结构和数据构成,没有数据的表是没有意义的。表结构可以通
过项目管理器和 MODIFY STRUCTURE命令打开表设计器进行修改。
8、表在使用前要先打开,表中的记录可以用 APPEND,INSERT INTO等命令
进行追加,也可以使用 DELETE命令进行删除,还可以使用 BROWSE命令打开
全屏幕编辑窗口进行修改和浏览,可以用 REPLACE命令替换数据。
9、从表中提取数据时,要对表中的记录进行定位。