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

当前记录标志删除标志位关闭按钮第五步:修改结束后单击关闭按钮关闭浏览窗口在浏览窗口中可以去除、恢复垂直分隔线,也可以改变字段的显示宽度。
2009-7-26 Visual FoxPro 6.0程序设计 47
( 2)利用命令浏览和修改表中的数据格式,BROWSE [FIELDS <字段名表 >] [LOCK <数据型表达式
>] [LAST] [FOR <逻辑型表达式 >]
功能,在屏幕上打开一个浏览窗口,在窗口中显示表的记录。
参数描述:
[Fields<字段名表 >],指定在浏览窗口中显示的表的字段。
LOCK <数据型表达式 >,将浏览窗口一分为二,指定在左窗口中显示的字段数。
LAST,按最后一次关闭浏览窗口的方式打开浏览窗口。
FOR <逻辑型表达式 >,指定在浏览窗口中显示的记录所要求满足的条件。
说明:
1,BROWSE命令可以带有很多任选项,命令格式中只介绍了
BROWSE命令的最基本的任选项。
2009-7-26 Visual FoxPro 6.0程序设计 48
2、在 <字段名表 >中,除了可以使用表所定义的字段以外,还可以使用计算字段。
计算字段,就是由表中的字段组合成的合法的 VFP的表达式。
注意,计算字段的名称不能与当前表中的字段名同名,长度不能超过 10个字符。计算字段是只读的,它的值随着组成计算字段的表中的字段值的变化而变化。
计算字段的格式为,<计算字段名 >=<表达式 >
BROWSE FIELDS NAME_BIRTH=姓名 +":"+性别 +":"+DTOC(出生日期 )+"出生 "
当执行上述命令后屏幕显示结果
2009-7-26 Visual FoxPro 6.0程序设计 49
在计算字段后面使用,H参数,窗口中显示中文字段名
BROWSE FIELDS NAME_BIRTH=姓名 +":"+性别 +":"+ ;
DTOC(出生日期 )+"出生 ":H="姓名和出生日期 ",宿舍,电话执行上述命令后,屏幕显示结果计算字段指定的中文名计算字段的值指定中文字段名
2009-7-26 Visual FoxPro 6.0程序设计 50
2、记录值替换命令格式,REPLACE <字段名 1> [ADDITIVE] [,<字段名 2> WITH <
表达式 2> [ADDITIVE]…] [< 范围 >] [FOR <条件 >] [WHILE <条件 >]
功能,不进入全屏幕编辑方式,根据命令中指定的条件和范围,
用表达式的值去更新指定字段的内容。
参数描述:
<字段名 1>,指定要替换值的字段。
WITH <表达式 1>,指定用来进行替换的表达式或值。
<范围 >,指定进行替换时的记录范围。
FOR <条件 >,指定要进行替换字段值的记录应满足的条件。
WHILE <条件 >,当记录的条件不满足时结束替换。用以按条件中的字段建立了索引的表。
说明:
WITH后面的表达式的类型必须与 WITH前面的字段类型一致 。
返 回
2009-7-26 Visual FoxPro 6.0程序设计 51
3.5.7 删除记录在 VFP中删除记录是分为两步来进行的,第一步是将要删除的记录做上删除标记,第二步才是将记录真正从表是彻底删除。
1、逻辑删除(为记录做上删除标记)
格式,DELETE [<范围 >] [FOR <条件 >] [WHILE <条件 >]
功能,对当前表文件中指定的记录做删除标记。
GO 7
DELETE
GO 4
DELETE NEXT 3
LIST
执行上述命令后屏幕显示结果:
2009-7-26 Visual FoxPro 6.0程序设计 52
2、物理删除(清除带有删除标记的记录)
格式,PACK [DBF] [MEMO]
功能,省略选择项,该命令将从当前表中删除所有带删除标记的记录。选择 DBF,表示仅清除逻辑删除的记录而不压缩备注文件,
选择 MEMO表示仅压缩备注文件中无用的空间而不清除被逻辑删除的记录。不带任何选择项时,PACK命令既清除逻辑删除的记录,又压缩备注文件。
说明,用 PACK命令删除的记录是不可被恢复的。所以在使用
PACK命令前一定要检查删除标记是否加的正确。
例:
PACK
LIST
执行上述命令后屏幕显示的结果:
注意:在进行这一步操作前先备份数据
2009-7-26 Visual FoxPro 6.0程序设计 53
3,恢复带删除标记的记录格式,RECALL [<范围 >] [FOR <条件 >] [WHILE <条件 >]
功能,恢复当前表中带删除标记的记录,即去掉删除标记,*”
号。当省略所有的选项时,仅恢复当前记录。
(先从备份的数据中恢复 Student表中的数据 )
RECALL ALL
BROW
执行上述命令后屏幕显示的结果
4,清除所有记录 格式,ZAP
功能,从当前表中清除全部记录,仅保留表的结构。
ZAP命令与 DELETE ALL 和 PACK两条命令执行的结果相同,区别在于 ZAP执行的速度更快,当表中的记录很多时尤为明显。
返 回
2009-7-26 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、从表中提取数据时,要对表中的记录进行定位。