第一章 数据库系统基础知识
1.1 数据库系统
1.2 数据管理与数据模型
1.3 关系数据库
1.1.1 基本概念
5、数据库应用系统
1、数据
4、数据库系统
3、数据库
2、数据处理
数据是指存储在某
一媒体上的,能够识别的物
理符号 (能够被计算机接收
并处理的载有信息的 符号 )
数据处理是指将数据转换
成信息的过程。从数据处
理的角度看,信息是一种被
加工成特定形式,对于用
户来说是有意义的数据。
信息=数据+处理
数据库是存储在
计算机存储器中,结构化
的相关数据的集合,它不
仅包含数据本身,还包含
数据之间的联系。
数据库系统 是指引进数
据库技术后的计算机系统。
数据库系统由 硬件系统, 数
据库集合, 数据库管理系统
和 用户 组成,是实现有组织
地、动态地存储大量有关数
据,提供数据处理和信息资
源共享的计算机系统。
数据库应用系统 是指开
发人员利用数据库系统资源
开发出来的,面向某一类实
际应用的应用软件系统。如
财务管理系统、人事档案管
理系统、教学管理系统、生
产管理系统等等。数字、字母、文字等文本形成的数据; 图形、图像、动画、影像、声音等非
文本形式的多媒体数据
1.1.2 计算机数据管理的发展
一、人工管理阶段
二、文件系统阶段
三、数据库系统阶段
四、分布式数据库系统阶段
1.1.3 数据库系统的组成
一、系统组成
1.硬件系统
2.数据库集合
3.系统软件
4.数据库管理员
5.用户
? 足够大容量的内存
? 足够大容量的硬盘
? 足够数量的脱机存
储介质,如软盘、
活动硬盘、磁带等
? 包括若干个设计合
理、满足应用需要
的数据库
? 操作系统 DOS、
WINDOWS
数据库管理系统
FoxBASE/Foxpro
? 对于具有一定规模
的数据库系统,应
配备专人对数据库
系统进行日常维护
管理。
? 小型数据库一般无
需专门的管理员
最终用户:数据库
应用软件的使用者
? 专业用户:数据库
应用软件的开发者
1.实现数据共享,减少数据冗余
2.采用特定的数据模型
3.具有较高的数据独立性
4.有统一的数据控制功能
二、系统特点
1.2.1 数据库管理系统的功能
1、数据定义功能
2、数据操纵功能
3、数据库运行
控制功能
4、数据字典
可按照用户的要
求定义数据库的结构,
为此 DBMS专门提供了数
据描述语言 DDL,小型
DBMS则提供交互命令,
如 CREATE,MODE STRU等。
可对数据库中数
据进行追加、插入、修
改、删除、检查、统计、
排序等操作,为此 DBMS
提供了数据操纵语言 DML。
小型 DBMS提供交互命令。
可控制数据库的运行和用户的并发性访问,主
要包括:
?完整性控制,用户操作数
据时,通过约束条件对操作
进行检查。
?安全性控制,在多个用户
共享数据时,通过鉴定身份,设置权限、校对口令来实现。
?并发性控制,在多个用户
同时修改一批共享数据时,
通过加锁、解锁来防止数据
修改的不确定性。
?数据库恢复
1.2.2 实体及其联系
一、实体及实体间的联系
二、联系的类型
? 实体
? 属性
? 联系
? 一对一联系
? 一对多联系
? 多对多联系
1.2.3 数据模型简介
1、层次数据模型
2、网状数据模型
3、关系数据模型
数据之间
的联系象一棵倒
置的树,数据之
间有层次之分,
如单位编制。
数据之间
的联系象一张网,
数据无层次之分。
如学校中的教师、
学生、课程、成
绩之间的关系。
用二维
表来表示数据及
其相互关系的模
型。在关系模型
中,操作对象和
结果都是二维表,
这种二维表就是
关系。
1.3.1 关系模型
一、二维表
二、关系术语
三、关系的特点
对于我们非
计算机专业的用户
来说,表示数据及
其相互关系,最简
单、最直观、最有
效的方法,就是使
用表格。
关系 元组 属性
域 关键字 关系模式
关系:即二维表,
每个关系有一关系
名,一个关系在计
算机中可作为一个
文件存储,在
FoxBASE中称为数
据库文件。
元组:二维表中的
每一行称为一个元
组 (表头行除外 ),
在 FoxBASE中称为
记录。
属性:二维表中的
列称为属性,每一
列有一属性名 (表
头行即每列的属性
名 ),在 FoxBASE中
称为字段或数据项。
域:属性的
取值范围。。
关键字:属性或属
性组合,其值能唯
一地标识一个元组,
如职工号,登录号。
关系模式:
对关系的描述方式,
其格式为:关系名
(属性名 1,属性名
2,…… )
1.关系必须规范化
2.在同一个关系中不
能出现相同的属性

3.关系中不允许有完
全相同的元组
4.在一个关系中元组
的次序无关紧要
5.在一个关系中列的
次序无关紧要
1.3.2 关系运算
一、传统的集合运算
二、专门的关系运算
1.并
2.差
3.交
1.选择
2.投影
3.联接
4.自然联接与优化
并:两个相同结
构的关系的并是由属
于这两个关系的元组
组成的集合。
R1 R2
R1 并 R2
差:设有两个相同结
构的关系 R和 S,R差 S
的结果是属于 R但不属
于 S的元组的集合。
R 差 S选择:从关系中
找出满足条件的元组。 投影:从关系模式中指定若干个属性
组成新的关系。
联接:两个关系
的横向结合,将两个
关系的属性名拼接成
一个新的关系,新关
系中包含满足联接条
件的元组。
交:设有两个相同结
构的关系 和, 交
的结果是既属于 R又属
于 的元组的集合。
R 交 S
第二章 FOXBASE+概述
2.1 启动 FoxBASE+系统
2.2 系统性能与工作方式
2.3 数据库的建立与使用
2.1.1 系统基本文件和运行环境
一、系统的基本组成
二、运行环境
三,FoxBASE+的安装
四、关系术语比较
1,单用户 FoxBASE+
2,多用户 FoxBASE+
五个基本文件:
FOXPLUS.EXE(系统执行程序 )
FOXPLUS.OVL(系统覆盖程序 )
FOXPCOMP.EXE(伪编译程序 )
FOXBIND.EXE(过程组合程序 )
FOXHELP.HLP(帮助文件 )
不同的主要程序文件:
MFOXPLUS.EXE
(系统执行程序 )
MFOXPLUS.OVL
(系统覆盖程序 )
硬件:
IBM- PC及其兼容机
最少 360K内存
硬盘
软盘驱动器驱
软件:
MS-DOS2.0以上版本
汉字系统
步骤 1:
启动计算机,正常引导
MS- DOS。
步骤 2:
C:\>md\fox
步骤 3:
将 FoxBASE系统盘插入软
驱,执行:
C:\>copy a:*.* c:\fox
或 C:\>cd\fox
C:\FOX>copy a:*.*
2.1.2 FoxBASE+的运行
1.不通过 DOS的路径自动
搜索功能启动 FoxBASE+
2.利用 DOS的路径自动
搜索功能启动 FoxBASE+
3.系统帮助信息
4.退出 FoxBASE+
步骤 1:启动汉字系统
C:\>cd \ucdos
C:\UCDOS>ucdos
步骤 2:启动 FoxBASE+
C:\UCDOS>cd \fox
C:\FOX>FOXPLUS
(单用户系统 )
或 C:\FOX>MFOXPLUS
(多 用户系统 )
步骤 1:启动汉字系统
C:\>ucdos
步骤 2:在用户工作目录 (如
WANG)下运行 FoxBASE+
>cd WANG
C:\WANG>FOXPLUS
(单用户系统 )
或 C:\WANG>MFOXPLUS
(多 用户系统 )
1、阅读联机帮助信息
命令格式,HELP 或 F1
2、退出帮助
在帮助信息的任何屏幕,
按 <ESC>键即可退出帮助,
返回圆点提示符状态。
命令,QUIT
在圆点提示符下键入此命
令则退出 FoxBASE+,返回
DOS操作系统。
2.2.1 文件类型
一、文件命名规则
[<盘符 >:\路径 \]<文件名 >[.<扩展名 >]
二、各类文件
1.数据库文件 (.DBF) 7.报表格式文件 (.FRM)
2.备注文件 (.DBT) 8.文本文件 (.TXT)
3.索引文件 (.IDX) 9.标签格式文件 (.LBL)
4.内存变量文件 (.MEM) 10.伪目标文件 (.FOX)
5.命令文件 (.PRG) 11.系统环境文件 (.VUE)
6.屏幕格式文件 (.FMT)
2.2.2 系统主要性能指标
一,FoxBASE+系统主要性能指标
每个数据库文件最大记录数 10亿个
每个记录最多字段数 128个
字符型字段的最多字符数 254个字节
每个字符串的最大长度 254个字节
命令行的最大长度 254个字节
每个记录的最大长度 4000个字节
数值计算中最多有效位数 16位
索引关键字的最大长度 100个字节
二、两种工作方式
默认内存变量最多个数 256个
内存变量最多个数 3600个
数组的最多个数 3600个
最多同时打开的文件个数 48个
人机交互方式指在
圆点提示符状态下直接
键入命令,回车后系统
立即执行,并反馈执行
结果或错误信息。
自动处理工作方
式是指执行命令文件。
与其他程序设计语言
相同,用户可以使用
FoxBASE+系统的命令
和自含语句编写程序
放在命令文件中,命
令文件扩展名为,PRG。
1、人机交互方式(命令方式)
2、自动处理方式(程序方式)
2.2.3 命令格式
一、命令的一般格式
命令动词 [<范围 >] [<表达式表 >] [FIELDS<字段名表 >]
[FOR<条件 >] [WHILE<条件 >]
二、命令中的短语
1,<范围 >指明执行命令时的作用范围。
ALL NEXT<n> RECORD<n> REST
2,<表达式表 >用于指出命令操作的内容或表示计算公式。
3,FIELDS<字段名表 >要求系统仅对指定的字段进行操作,
排列顺序按字段名表中各字段的先后次序。
5,WHILE<条件 >指示系统从当前记录开始,在指
定范围内按顺序比较条件,对符合条件的记录
进行操作,一旦遇到不满足条件的记录则终止
命令。
4,FOR<条件 >指示系统仅对指定范围内满足条件
的记录进行操作。
1、命令的输入不分大小写。
2、每个命令都必须以命令动词开头,命令动词只
需键入前四个字符即可,不必键入整个动词。
3、各短语之间必须以空格分开,空格的个数不限。
4,FoxBASE+的命令表示方式非常灵活,在命令动
词开头的前提下,命令中各个短语的次序可以任
意排列。
注意事项
2.3.1 建立数据库
一、字段类型
1、数值型
2、字符型
数值型字段只能由
阿拉伯数字、小数点和
正负号构成,类型的代
表字母是 N。对数值型
数据可以进行数学计算,
数值的最大精度是 16位
有效数字。
字符型数据可以由任何文
字和符号构成,类型的代表
字母是 C。字符型数据之间
不能进行数学运算,但可以
组成字符型表达式,还可以
按其 ASCII码进行大小比较。
一个字符型数据含有的字符
个数称为该字符型字段的长
度,最大长度为 254。
逻辑型数据只
有两个值,即逻辑
真和逻辑假,类型
的代表字母是 L。3、逻辑型4、日期型
5、备注型
日期型字段存放着
表示日期的数据。其类
型代表字母是 D。系统默
认的日期型数据的格式
为“月 /日 /年”
(mm/dd/yy ),其中月、
日、年各为两位数字。
FoxBASE+采用备注
文件的形式存放较多的
文字信息,而在数据库
中只存放这些信息的地
址指针,该数据的类型
称为备注型,类型代表
字母是 M。 备注型实际
数据存放在,DBT文件中。
数据库字段类型
中文名称 英文名称 代表字符 长度
字符型 Character C 用户定义
数值型 Numeric N 用户定义
日期型 Date D 8
逻辑型 Logical L 1
备注型 Memo M 10
二、建立数据库
1,建立数据库
命令格式,
CREATE <数据库文件名 >
功能注释:
(1)文件扩展名可以省略,由系统默认为,DBF。
(2)执行此命令时系统进入全屏幕编辑状态,并以人
机会话方式在屏幕下方给出充分的提示信息,方便用
户对字段的描述。
(3)当数据库中定义了备注型字段时,系统自动生成
一个与库文件的主名相同、扩展名为,DBT的辅助文件
来存放此类字段的内容。
3,退出输入数据的全屏幕编辑方式
2,向备注型字段输入数据
1,向数据库文件输入数据
三、全屏幕编辑
四、建库时输入数据
(4)一个数据库最多定义 128个字段。字段总
宽度不能超过 4000个字节。
2.退出 CREATE
常用控制键
控制键 等价键 功能说明
? Ctrl+E 光标上移一行或一个字段
? Ctrl+X 光标下移一行或一个字段
? Ctrl+S 光标左移一个字符或一个选择项
? Ctrl+D 光标右移一个字符或一个选择项
PgUp Ctrl+R 显示上一屏或上一个记录
PgDn Ctrl+C 显示下一屏或下一个记录
Home Ctrl+A 光标左移一个字
End Ctrl+F 光标右移一个字
Ins Ctrl+V 字符重写 /插入控制逻辑开关
Ctrl+U 删除一个字段或给记录作删除标记
Ctrl+N 插入一个新字段或新的一行
Del Ctrl+G 删除光标所在位置的字符
Ctrl+Y 自光标处删除至字段尾或行尾 Ctrl+W
Ctrl+End 编辑结束存盘返回
Esc Ctrl+Q 不保存编辑结果返回
将光标移至备注处,
按 Ctrl+Home进入编辑状
态,Ctrl+End完成编辑。
在一个新的空记录出
现时直接回车,系统结
束输入,返回圆点提示
符。
Ctrl+End或 Ctrl+W组
合键正常结束编辑,存
盘退出。
Ctrl+Q或 <Esc>废除
本次输入,不存盘退出。
输入时应注意,
(1)如果输入的内容
宽度充满字段定义的
宽度,光标会自动跳
到下一个字段。
(2)如果输入内容宽
度小于字段定义宽度,
输入完后按回车键跳
到下一个字段。
(3)可以全屏幕编辑。
(4)系统提供一定的
完整性检验功能。
2.3.2 使用数据库
一、打开数据库
USE <数据库文件名 >
功能注释:
(1)命令中可以省略文件扩展名,系统默为,DBF
文件。
(2)数据库文件刚刚打开时,系统内部的记录指
针指向第一个记录。
(3)USE命令在打开指定数据库之前关闭当前工作
区原来已经打开的数据库文件。
二、关闭数据库
命令格式 命令功能
USE 关闭当前工作区的数据库文件
CLOSE DATABASE 关闭所有工作区的数据库文件
CLOSE ALL 关闭所有工作区的所有文件,
当然也包括数据库文件
QUIT 关闭所有文件退出 FoxBASE+
系统,返回 DOS
三、显示数据库
1、显示数据库结构
LIST STRUCTURE [TO PRINT]
DISPLAY STRUCTURE [TO PRINT]
功能注释:
(1)这两条命令都是把当前数据库的结构显示出来。
显示内容包括 5方面的信息:数据库文件全名、记录
总数、数据库最后更新日期、所有字段的定义、记录
中字段的总字节宽度。
(2)若选用 TO PRINT短语,则将结果在屏幕上显示的
同时也在打印机上输出。若不选用此短语,则在屏幕
上显示。
(3)DISPLAY STRUCTURE命令为分屏显示,每显示满一
屏后暂停,按任意键将继续显示下一屏。
(4)LIST STRUCTURE命令为连续显示,屏幕自动上卷,
直至全部显示完为止。
2、显示数据库记录
LIST [<范围 >] [<表达式表 >] [FOR<条件 >] [WHILE<条件 >]
[OFF] [TO PRINT]
DISPLAY [<范围 >][<表达式表 >][FOR<条件 >][WHILE<条件 >]
[OFF] [TO PRINT]
功能注释,
(1)范围为 ALL,NEXT<n>,RECORD<n>,REST其中之一。
(2)<表达式表 >可以列出合法表达式,最常用的是用逗号
分开的字段名。省缺表达式时,系统默认所有字段。
(3)当省缺范围短语时,LIST连续显示数据库全部记录,
即默认范围为 ALL。而 DISPLAY则仅显示当前一条记录。
(5)若选用 TO PRINT短语,则将结果在屏幕上
显示的同时也在打印机上输出。否则仅在屏幕上
显示。
(6)FOR<条件 >短语用于在指定范围内进行选
择操作,仅显示满足条件的记录。
(7)WHILE<条件 >,从当前记录出发,显示符
合条件的记录,一旦遇到不满足条件的记录,无
论后面是否还存在符合条件的记录都终止命令。
(8)命令中如果包括 FOR<条件 >短语,但缺省
范围短语,范围默认为 ALL,
(4)命令中指定 OFF表示不显示记录号,否则
记录前面给出记录号。
四、设定当前工作盘和文件搜索路径
1、设定当前工作盘
SET DEFAULT TO <盘符 > [:]
2、设定文件搜索路径
SET PATH TO <路径表 >
功能注释:
(1)如果被访问的文件在当前路径下找不到,系统就会到
此命令设置的各条路径下去搜索。
(2)路径可以用绝对路径表示,也可以用相对路径表示。
(3)如果指定多条路径,路径表中的各条路径之间要用逗
号或分号分隔 。
3、查看历史
第三章 FoxBASE+数据元素
3.1 常量与变量
3.2 表达式
3.3 函数
3.1.1 常量
1、数值型常量
2、字符型常量
3、逻辑型常量
4、日期型常量
数值型常量
就是用阿拉伯数
字、小数点和正
负号构成的常数。
字符型常量
也称字符串。字
符型常量在命令
中的表示方法是
用半角单引号、
双引号或方括号
把字符串括起来。
逻辑型数据
只能从逻辑真或
逻辑假两个值中
取一,用来描述
对事物状态的判
断结果。在命令
中使用逻辑型常
量应加定界符。
日期型数据
是一种由数字的
固定格式表示的
特殊类型。默认
的格式为, 月 /
日 /年, 。在命
令中使用日期型
常量应借助转换
函数。
3.1.2 变量
1、记录指针
2、记录指针的移动
1)绝对移动
GO <数值表达式 > |TOP|BOTTOM
功能注释,
(1)参数为数值表达式时,命令将指针定位到数值表达
式的值所代表的记录号,因此表达式的值必须是正整数。
(2)参数为 TOP时,将指针定位于数据库的顶部即首记录。
(3)参数为 BOTTOM时,将指针定位到数据库的底部,即
尾记录。
打开数据库之后,库文件
中的字段名就是变量,称
为字段变量。字段变量的
取值取决于记录指针。
一、字段变量
2)相对移动
SKIP <数值表达式 >
功能注释:
(1)记录指针定位到当前记录号加表达式值的位置。
(2)省略表达式只写 SKIP时,系统默认为 SKIP 1,即向
下移动一条记录。
(3)使用索引文件时,指针将按照主索引的逻辑顺序移
动。
二、内存变量
2、内存变量的赋值命令
<内存变量 >=<表达式 >
STORE <表达式 > TO <内存变量名表 >
功能注释:
(1)等号一次只能给一个内存变量赋值。
(2)STORE命令可以同时给若干 个变量赋予相同的值,
各内存变量名必须用逗号分开。
(3)可以通过对内存变量重新赋值来改变其内容和类

3、两种变量的比较
?内存变量有数值型,
字符型,逻辑型,日期
型,屏幕型五种,比字
段变量多一种屏幕型,
用于保存屏幕信息。
?内存变量可以通过赋
值命令建立并赋值。
1、内存变量的类型
3.2.1 数值表达式
一、数据的无格式输出
? <表达式表 >
?? <表达式表 >
功能注释:
(1)?在光标当前行的下一行起始位置开始显示各个表达
式的值,各个表达式之间用逗号分开。
(2)如果?命令中缺省表达式,则只起到换行作用。
(3)??在当前光标位置开始显示各个表达式的值。
(4)通常用于在屏幕上显示输出,如果同时要在打印机上
输出,必须先用打印设置命令 SET PRINT ON接通打印
机,打印结束后,再用 SET PRINT OFF 挂断打印机。
优先级 运算符 说明
1 ( ) 括号优先
2 +,— 正、负号
3 ^或 ** 乘方运算
4 *,/ 乘、除运算
5 +,— 加、减运算
二、数值表达式
3.2.2 字符表达式
<字符串 1>+<字符串 2>
前后两个字符串首尾连接组成一个新的
字符串
<字符串 1>-<字符串 2>
连接前后两个字符串,并将前一个字符
尾部的空格移到合并后的新字符串的尾
部。
3.2.3 逻辑表达式
一、简单逻辑表达式
<表达式 1> <比较运算符 > <表达式 2>
1、比较运算符
=,>,<,>=,〈 =,<>(#),$,= =
(1)两个相比较的表达式数据类型必须相同。
(2)数值型数据按照其数值的大小进行比较。字符型
数据按照其内码顺序比较。
2、字符串比较方式
SET EXACT ON|OFF
OFF状态时,比
较到右边字符串结束
即终止,称为不精确
比较。
ON状态时,对两
边字符串的进行完全
比较。
系统默认 OFF。3、变量的赋值与比较的区别
二、复合逻辑表达式
1、逻辑运算符
.OR.,AND,!或,NOT,( )
低 (优先级) 高
2、运算的规则
<exp1> <exp2>,not.<exp1><exp1>.AND.<exp2> <exp1>.OR.<exp2>
.T.,T.,F.,T.,T.
.T.,F.,F.,F.,T.
.F.,T.,T.,F.,T,
.F.,F.,T.,F.,F.
<逻辑表达式 1><逻辑运算符 ><逻辑表达式 2>[<逻
辑运算符 ><逻辑表达式 3>… ]
3.2.4 日期表达式
一、日期型数据之间的算术运算
(1)<日期 1>-<日期 2>
两个日期型数据相减,得到相差的天数,表达式的
结果为数值。
(2)<日期 >+或 -<数值表达式 >
一个日期加上数值表达式的值结果等于若干天以后
的日期 ;一个日期减去数值表达式的值结果等于若干
天以前的日期。表达式的结果仍为日期型数据。
二、日期型数据的比较
3.3 函数
一、函数的特点
(1)函数不是命令,不能直接写在圆点提示符的后面。
(2)函数是一种数据形式,可以作为命令中表达式中
的组成部分。
(3)除了宏替换函数 &之外,所有函数无论其是否有参
数都必须跟随圆括号。
二、两个日期函数
1、字符串到日期的转换函数
CTOD(<字符表达式 >)
2、系统日期函数
DATE( )
3、文件首标测试函数
BOF( )
测试记录指针所
指的当前记录号,返
回的数值是当前记录
的序号。
测试当前记录指
针是否移动到文件结
束标识,返回逻辑真
(.T.)或逻辑假 (.F.)。测试当前记录指
针是否指向文件起始
标识,返回逻辑真
(.T.)或逻辑假 (.F.)。
三、记录指针测试函数
1、记录号测试函数
RECNO( )
2、文件尾标测试函数
EOF( )
第四章 数据库的维护
4.1 修改数据库
4.2 编辑数据库记录
4.3 复制数据库
4.4 文件管理
4.1.1 修改数据库结构
一、修改结构命令
MODIFY STRUCTURE [<数据库文件 >]
功能注释,
(1)执行此命令时系统首先自动生成一个备份文件,备
份文件与被修改的数据库文件 (.DBF)同名,但扩展名
为 (.BAK) 。
(2)如果插入字段 (Ctrl+N)或 删除字段 (Ctrl+U),不要
同时修改其他字段的名称。
(3)在修改字段名称时不要同时修改该字段的其他参数,
包括宽度、类型。
(4)缩短字段宽度后字符型数据将被从尾部截短。如果
数值型数据宽度不够,数据将以 ***表示溢出。
1、追加字段
2、修改字段
3、插入新字段
4、删除字段
5、移动字段位置
二、字段的增、删、改
4.1.2 追加记录
一、通过键盘追加记录
APPEND [BLANK]
功能注释:
(1)如果数据库有 n条记录,将从第 n+1条记录开
始追加。
(2)用 <ESC>或 Ctrl+Q退出时,仅废除当前正在
编辑的记录,其他记录已经存盘。
(3)用 APPEND BLANK不进入全屏幕编辑,直接追
加一条空记录,其内容以后可以用其他命令
填写。
APPEND FROM <源数据库名 > [FIELDS<字段名表 >][FOR<条
件 >]
功能注释:
该命令将满足条件的记录按指定的字段从源数据库接续 到
当前数据库末尾。
命令注释:
(1)系统首先比较源数据库和当前数据库的结构,只有名称和
类型相匹配的字段内容才可以追加,其他字段为空。
(2)如果源数据库字段的宽度大于当前库相应字段的宽度,字
符型字段将被截断尾部,数值型字段填写,*”号以示溢出。
(3)如果无条件追加,则追加源库中的所有记录。
二、从其他数据库追加记录
4.1.3 从文本文件追加记录
一、从标准数据格式文本追加记录
APPEND FROM <文本文件名 > SDF [FIELDS <字段名表 >]
[FOR<条件 >]
功能注释:
(1)源文件的默认扩展名是,TXT
(2)命令中 SDF表示系统标准数据格式文件 (System
Data Format)。每个记录都是定长的,以回车换行
结束记录行。命令执行时,从左至右依次按照数据
库的字段宽度截取数据添加到相应字段中,遇到回
车换行完成一个记录的追加。
(1)系统默认分隔符和定界符
APPEND FROM <文本文件名 > DELIMITED
[FIELDS<字段名表 >] [FOR<条件 >]
功能注释:
系统默认字段以逗号分隔,字符型数据用
双引号作为定界符。由于不包含多余的空格,
每个记录不一定等长,但均以回车换行结束。
二、从带定界符的文本追加记录
(3)指定字符串定界符
APPEND FROM <文本文件名 > DELIMITED WITH
<定界符 >
功能注释:
在该命令表示,数据的字段分隔符是逗号,
字符串定界在命令中指定,如 #,‘, $,!等。
每个记录均以回车换行结束。
(2)以空格作为分隔符和定界符
APPEND FROM <文本文件名 > DELIMITED WITH BLANK
功能注释:
在这种格式的文本文件中,数据的字段分隔符和
字符串定界符都是空格。由于不包括多余的空格,每
个记录不一定等长,但均以回车换行结束。
4.1.4 插入记录
INSERT [BEFORE] [BLANK]
功能注释:
此命令以全屏幕编辑方式插入一条记录。
(1)若选用 BEFORE短语,在当前记录之前插入一
条新记录,否则插在当前记录之后。
(2)若选用 BLANK短语,系统不进入全屏幕编辑,
直接插入一条空记录。此记录的内容以后可以
用其他命令填写。
4.2.1 编辑数据库记录
一、编辑记录
EDIT[<范围 >][FIELDS<字段名表 >][FOR<条件 >][WHILE<条件 >]
CHANGE[<范围 >][FIELDS<字段名表 >][FOR<条件 >][WHILE<条件 >]
功能注释:
(1)如果给出 FIELDS字段名表,则只显示、修改指定字
段。否则修改所有字段。
(2)若未指定范围和选择条件,则从当前记录开始顺序
修改各条记录。
1、命令格式
BROWSE [FIELDS<字段名表 >] [LOCK<数值表达式
>] [FREEZE<字段名 >] [NOFOLLOW] [NOAPPEND]
[WHIDTH <数值表达式 >] [NOMODIFY] [NOMENU]
功能注释:
(1)如果指定 FIELDS字段名表,则按照指定字段和
顺序显示。省缺显示所有字段。
(2)LOCK<数值表达式 >指出锁定左边不随水平方向
滚动的字段数,以方便修改时参考屏幕左边的字
段。
二、浏览记录
(8)除了其它全屏幕编辑命令都有的控制键提示菜单外,本
命令还有一个功能选择菜单。 F1可以显示或取消控制键
提示菜单。用 Ctrl+Home或 F10键可以在顶部呼出本命令
的功能选择菜单,用 <ESC>键取消菜单。 NOMENU禁止显
示功能选择菜单,用 ^Home或 F10均不能呼出。
(4)NOMODIFY指出禁止在浏览时修改记录。
(5)FREEZE <字段名 > 指出唯一允许修改的字段,其他字段
只显示不修改。
(6)WHIDTH<数值表达式 >规定字符型字段的限制显示宽度,
超过此宽度的字段可以用 ?或 ?键在限定宽度内滚动显示。
(7)NOFOLLOW只有当打开索引文件时此选项才有效。
(3)NOAPPEND指出禁止浏览到文件尾时向数据库追加记录。
末尾 ——将光标定位到最后一条记录。
首 ——将光标定位到首记录。
记录号 #——将光标定位到指定记录号。
跳过 ——使光标按给定的数值前后移动。
锁定 ——水平移动屏幕时锁定左边不随之
滚动的字段数。
冻结 ——指定唯一允许修改的字段。
查找 ——打开索引文件时有效,将指针定位
到与指定的关键字段值相匹配的
第一个记录。
2、功能选择菜单项
3、菜单选择方式
REPLACE [<范围 >] [<字段名 1> WITH <表达式 1>][,<字段
名 2> WITH <表达式 2>… ] [FOR< >] [WHILE< >]
功能注释:
(1)表达式与对应字段的数据类型必须相同。对于数值型
字段,当表达式的值超过字段的宽度时,系统按如下规
则进行替换:对小数部分四舍五入取整,若仍然超长只
能以 *号表示溢出。
(2)如果范围和条件短语均缺省,则只替换当前记录,即
默认当前记录。
(3)对打开索引的数据库替换索引关键字时,记录将重新
定位,因此不能指定范围和 FOR<条件 >或 WHILE<条件 >
三、字段的替换
4.2.2 删除数据记录
一、逻辑删除
1、对记录加删除标记
DELETE [<范围 >] [FOR <条件 >] [WHILE<条件 >]
功能注释:
(1)如果范围和条件短语均缺省,则只对当前记
录作删除标记,即默认当前记录。
(2)被加上 *号的记录仍然存在,对测试函数
DELETED()返回逻辑真值。
2、测试函数 DELETED()
函数 DELETED()的功能是测试记录是否已
经被逻辑删除。如果记录已经被打上了删除
标记, *”,函数的返回值是逻辑真,T.,否则
返回逻辑假,F.。
SET DELETED OFF|ON
命令注释:
(1)设置为 OFF时,删除标记 *失效,标记为
*的记录参与所有命令的操作。
(2)设置为 ON时,删除标记生效,操作命令
忽略逻辑删除的记录。
(3)系统初态 SET DELETED默认为 OFF状态。
3、删除生效逻辑开关
RECALL[<范围 >][FOR<条件 >][WHILE<条件 >]
功能注释:
(1)如果范围和条件短语均缺省,则只取消当前
记录的删除标记,即默认当前记录。
(2)无论 SET DELTED 设置状态 ON还是 OFF,都能
够恢复记录
(3)不能恢复用 PACK或 ZAP命令物理删除的记录。
4、恢复被逻辑删除的记录
1、删除标记为 *的记录
PACK
功能注释:
(1)执行此命令后,记录已被物理删除,不能再用
RECALL恢复,
(2)无论 SET DELETED设置状态 ON还是 OFF,都将执
行物理删除,
(3)关闭数据库时才更新目录信息,释放所删除记
录的存储空间,
二、物理删除
ZAP
功能注释,
(1)此命令等效于 DELETED ALL和 PACK两条命令连
续执行,但执行速度比 DELETED ALL更快。
(2)为避免误操作,系统要求再确认一次,回答 Y之
后才执行,否则并不执行。
2、清除数据库记录
4.3.1 复制数据库
一、复制数据库
COPY TO <新库文件名 > [<范围 >] [FIELDS<字段
名表 >] [FOR<条件 >] [WHILE<条件 >]
功能注释,
(1)必须首先打开要复制的数据库,使其成为当前
数据库,
(2)新数据库的结构由 FIELDS短语指出,缺省时默
认全部字段,
(3)数据记录由范围短语和条件短语选择,如果缺
省范围,默认为 ALL。
COPY STRUCTURE TO <数据库文件名 >
[FIELDS<字段名表 >]
功能注释,
(1)新数据库的结构由 FIELDS短语指出
字段名和顺序。
(2)如果 FIELDS短语缺省,则复制全部库
结构,但并不复制任何记录。
二、复制数据库结构
4.3.2 库结构与库文件之间的转换
一、生成结构文件
COPY TO <新库文件名 > STRUCTURE
EXTENDED
功能注释,
(1)结构库文件的默认扩展名是,DBF,其结构由
系统自动生成。
(2)结构库文件可以作为数据字典,或用于间接
方式生成数据库。
CREATE <新数据库名 > FROM <结构文件名 >
功能注释,
(1)此命令是 COPY STRUCTURE EXTENDED命令的逆过程。
结构库文件必须有标准结构,含 4个字段,FIELD_NAME、
FIELD_TYPE,FIELD_LEN,FIELD_DEC。
(2)生成的新数据库只包含数据库结构,没有记录。命令
执行后新数据库将自动打开。用户可以用 APPEND命令
追加记录。
二、从结构文件建立数据库
4.3.3 数据库转换成文本文件
一、复制成标准数据格式
COPY TO <文本文件名 > SDF [FIELDS
<字段名表 >] [FOR<条件 >]
功能注释:
命令中 SDF表示标准数据格式文件,每个
记录一行,以回车换行结束。从左至右依次按
照数据库的字段宽度排列,字段之间没有分隔
符,字符型数据无定界符。某字段值不足字段
定义宽度部分一律以空格补齐。
COPY TO <文本文件名 > DELIMITED [WITH <定界符 >
|BLANK][FIELDS <字段名表 >][FOR<条件 >]
功能注释:
根据字段分隔符和字符串定界符,分为三种情况。
(1)缺省 WITH选项,写成 COPY TO <文本文件名 >
DELIMITED,表示字段以逗号分隔,字符串型字段用双
引号作为定界符。
(2)写成 COPY TO <文本文件名 > DELIMITED WITH BLANK,
字段分隔符和字符串定界符都是空格,每个记录不一
定等长,均以回车换行结束。
(2)写成 COPY TO <文本文件名 > DELIMITED WITH <定界
符 >表示字段以逗号分隔,以指定的定界符界定字符型
字段,每个记录均以回车换行结束。
二、复制成带定界符的文本文件
4.4.1 文件管理命令
一、显示文件目录
DIR [<盘符 > <路径 >] [<文件名 >]
功能注释:
(1)此命令显示磁盘文件目录信息。缺省盘
符或路径时,系统默认当前盘或当前路
径。缺省文件名时,默认数据库文件。
(2)显示数据库目录时,包括数据库文件名、
记录个数、最后更新日期
RENAME <旧文件名 > TO <新文件名 >
功能注释:
(1)将磁盘文件改成新名。改名之前必须关闭,
正在使用的文件不能改名。
(2)如果有备注文件,对数据库改名时,不要忘
记为相应的,DBT文件改名,否则打不开改名
后的数据库。
二、文件改名
ERASE <文件名 > 或 DELETE FILE <文件名 >
功能注释:
这两种格式的命令等效,功能是从磁盘上删
除整个文件。为防止误操作,保护数据库不会
被轻易地误删除,文件名不能使用通配符,正
打开的文件不能删除。
三、删除文件
COPY FILE <源文件名 > TO <目标文件名 >
功能注释:
(1)此命令对文件按字节进行复制。文件名
必须给出全称,不能使用通配符。
(2)不能复制已打开的文件。
四、复制各类文件
五、显示文本文件
TYPE <文本文件名 > [TO PRINT]
功能注释:
此命令用于显示或同时打印文本文件。
4.4.2 调用外部程序
RUN <外部程序 > 或 ! <外部程序 >
功能注释:
该命令直接完成外部程序的功能。执行 RUN
或 ! 命令需要额外的内存空间,如果没有足够
的可用内存,将产生“内存不足”的错误。
第五章 数据库的统计与重新组织
5.1 数据统计
5.2 数据库排序与索引
5.3 数据检索
5.1.1 统计记录数
COUNT [<范围 >] [FOR<条件 >]
[WHILE<条件 >] [TO<内存变量 >]
功能注释:
(1)缺省范围短语时,系统默认值是 ALL。
(2)如果不用 TO短语指定内存变量,则仅
在屏幕上显示统计结果。
5.1.2 累加求和
SUM [<范围 >] [<表达式表 >] [FOR<条件 >]
[WHILE<条件 >] [TO<内存变量表 >]
功能注释:
(1)范围短语的默认值是 ALL。
(2)如果省缺表达式,则对数据库所有数值型字
段分别求和。
(3)若用 TO短语指定内存变量,内存变量的个数
必须与表达式的个数相同。若不用 TO短语,
则仅在屏幕上显示求和的总计结果。
5.1.3 计算平均值
AVERAGE [<范围 >] [<表达式表 >] [FOR<条件 >]
[WHILE<条件 >] [TO<内存变量表 >]
功能注释:
(1)范围短语的默认值是 ALL。
(2)如果缺省表达式,则对数据库中所有数值型字
段分别求平均值。
(3)若用 TO短语指定内存变量,内存变量的个数必
须与表达式的个数相同。若不用 TO短语,则仅
在屏幕上显示结果。
5.2.1 分类排序
SORT TO <新库名 > ON <排序关键字 1> [/A][/C][/D]
[,<排序关键字 2>[/A][/D]… ] [<范围 >] [FOR<条件 >]
[WHILE<条件 >] [FIELDS<字段名表 >]
功能注释:
(1)新文件的扩展名可以省略,由系统默认为,DBF。 /A表
示升序,/D表示降序,/C表示不区分西文字母的大小
写,它可以与 /A或 /D结合使用,以 /AC或 /DC表示。升
降序缺省时,系统默认升序。
(2)用作排序关键字的字段必须是可以比较大小的数据类
型,包括字符型、数值型或日期型字段。逻辑型和备
注型字段不能作为排序关键字。
(4)若选用 FIELDS短语,生成的排序数据库
只包含字段名表指定的字段。省略范围和条
件时,对数据库所有记录进行排序。
(3)当使用一个以上的排序关键字进行多
重排序时,先按照关键字 1排序,关键字 1
相同的记录再按关键字 2排序,依次类推。
5.2.2 建立索引文件
一、建立索引文件
INDEX ON <索引关键字表达式 > TO
<索引文件名 > [UNIQUE]
功能注释:
(1)索引关键字表达式可以是单个字段,也可以
是 FoxBASE+的合法表达式,表达式的值只能
是数值型、字符型或日期型。表达式最长为
100个字符。
(2)索引文件的默认扩展名是,IDX,它是一种
按表达式的值升序排列的索引组织。
(3)建立与使用索引并不改变数据库的物理记录
顺序。不能在屏幕上直接显示索引内容,只能
借助索引对原数据库进行逻辑排序。
(4)刚建立的索引文件自动打开,自动起作用。
(5)选用 UNIQUE时,在多个记录的索引关键字值
相同的情况下,只把相同值的第一个记录包含
在索引文件中,称为唯一索引。不选用 UNIQUE
时,索引文件包含所有记录的索引。
在命令中使用表达式实现
数值型 --字符型转换函数
STR(<数值表达式 >[,<长度 >][,<小数位
>])
功能注释:
把数值型数据转换成字符型数据。小数
点和负号均计作一位。
三、降序索引
用减法或负号实现
二、多重索引
5.2.3 使用索引文件
一、打开索引文件
USE <数据库名 > [INDEX <索引文件名表 >]
SET INDEX TO [<索引文件名表 >]
功能注释,
(1)在 USE命令中选用 INDEX短语,在打开数据库的同时打开
索引文件。
(2)SET INDEX命令是在已经打开数据库之后,需要再打开索
引文件时使用。它关闭以前的索引文件。
(3)索引文件名表至多包含 7个索引文件,系统默认索引文件
扩展名是,IDX。
(4)修改记录的索引关键字时,被打开的索引文件自动更新。
SET INDEX TO
CLOSE INDEX
功能注释:
这两种格式关闭当前工作区的所有索引文件,
数据库文件将恢复物理顺序。另外,CLOSE ALL
关闭各个工作区的所有文件,当然包括数据库文
件和索引文件。
二、关闭索引文件
SET ORDER TO [<数值表达式 >]
此命令重新指定第几个索引为主索引
命令注释,
(1)数值表达式的值为 0至 7,实际最大值应由打
开索引文件的数目而定。
(2)数值表达式取值为 0或者缺省时,恢复数据库
的自然顺序,暂时封锁所打开的索引文件 。
三、改变主索引
REINDEX
命令注释,
重新索引当前打开的所有索引文件,使之
正确反映数据库的实际数据值,
四、重新索引
NDX(<数值表达式 >)
功能注释:
(1)数值表达式的值表示打开索引文件时的位置
序号,其值必须在 1至 7之间。
(2)如果在指定位置打开了索引文件,则返回索
引文件全名,否则返回空串。
五、索引文件函数
5.3.1 按条件定位
一、条件定位命令
LOCATE [<范围 >][FOR<条件 >][WHILE<条件 >]
CONTINUE
命令注释:
(1)范围短语的默认值为 ALL。
(2)LOCATE将指针定位到满足条件的第一个记
录,CONTINUE使指针指向下一个满足条件的
记录。
(3)如果没有打开索引,检索按记录号顺序进
行。若打开了索引,检索按索引顺序进行。
查找到满足条件的记录时将记录指针指向该
记录。测试函数 FOUND( )返回逻辑真值。
(4)当没有满足条件的记录时,系统给出提示
信息, 定位在范围末,,表示在指定范围内
没有检索到。 如果范围为 ALL(默认 )或 REST,
查询失败时指针指向文件结束标识。如果指
定其他范围,记录指针则停留在范围的最后
一个记录。
FOUND()
功能注释:
用于测试是否查询到了满足条件的记录,即
检索命令是否成功。执行 LOCATE,CONTINUE命令,
以及下面介绍的 FIND和 SEEK命令检索时,如果
查找成功,FOUND()的函数值为逻辑真,T.,否则
返回逻辑假,F.。
二、查询测试函数
5.3.2 索引查询
一、查询字符串或数值 FIND
FIND <字符串 > | <数字 >
命令注释:
(1)查找到匹配的记录时,将记录指针指向该记
录。
(2)FIND中的字符串可以省略定界符,若字符串
包括前置空格,则必须加定界符。
(3)如果通过字符型内存变量检索,FIND中必须
使用宏替换函数 &,以表示按内存变量的内
容检索。
&<字符型变量 >[.]
功能注释:
替换出字符型变量的内容,即 &的值是变量
中的字符串。如果该函数与其后的字符无明确分
界,则要用,,,作结束标识。
二、宏替换函数
SEEK<表达式 >
(1)查找到匹配的记录时,将记录指针指
向该记录。
(2)SEEK中的字符串必须有定界符,以表
示指定的不是变量而是字符串常量。
(3)如果通过字符型内存变量检索,SEEK
中应直接给出内存变量名,作为简单的
表达式,不使用宏替换 &函数。
三、查找表达式 SEEK
5.3.4 分类汇总
TOTAL ON<汇总关键字 > TO <数据库名 > [FIELDS
<字段名 表 >][<范围 >][FOR<条件 >][WHILE<条件 >]
功能注释:
(1)数据库必须在汇总关键字上排序或索引。系统默认新
生成的汇总数据库扩展名,DBF,其结构与原数据库相
同,但不包括备注字段。
(2)数据库中汇总关键字相同的一类记录,在新库中只有
第一个记录,但数值型字段值是同类记录之和。
(3)用 FIELDS短语指定汇总字段,若缺省,则对所有数值
型字段汇总。范围的默认值是 ALL。
(4)如果库结构中字段宽度不足以容纳汇总结果,系统将
提示, 数值溢出(数据丢失〕,,并在相应字段中用 *
表示。
第六章 多重数据库操作
6.1 工作区的选择
6.2 数据库关联
6.3 数据库更新与联接
6.1.1 选择工作区
一、打开数据库
USE [<数据库文件名 > [INDEX <索引文件名 >]
[ALIAS<别名 >]]
功能注释:
(1)打开指定的数据库文件,文件扩展名默认为
DBF。缺省所有选项时,则关闭当前工作区的
数据库文件。
(2)INDEX<索引文件名表 >子句用于同时打开指定
的索引文件,一次最多打开 7个索引文件。
(3)ALIAS<别名 >子句用于指定数据库的别名。
(4)文件打开时,记录指针位于首记录,如果同
时打开索引文件,则位于索引表达式值最小
的逻辑首记录。
SELECT〈 工作区号 >|〈 用户别名 >|〈 系统别名 >|0
功能注释:
( 1)选择工作区命令对任何工作区的数据库及其记
录指针都不发生影响,仅实现工作区之间的转换。
在某个工作区打开数据库之后,返回此工作区时
不必再次打开数据库。
( 2)可以直接指定区号,也可以通过别名指定工作
区。有 3种等效的别名:一种是系统规定的别名 A
到 J;第二种是用 USE命令打开数据库时用 ALIAS
短语所定义的别名;第三种是没有别名时,可将
数据库文件主名作为别名使用。
( 3) SELECT 0 具有独特功能,表示让系统自动选择
区号最小的空闲工作区为当前工作区。如果没有
空闲工作区,系统将给出错误提示。
二、选择工作区
6.1.2 工作区函数
一、测试工作区、数据库和别名
1、工作区测试函数
SELECT( )
功能, 此函数返回当前工作区的区号。
2、测试数据库函数
DBF([<数值表达式 >])
功能, 返回指定的工作区的数据库文件名。若缺省 <数值
表达式 >,则默认当前工作区 ;如果指定的是空闲工作区,
返回空字符串。
3、别名函数
ALIAS(<数值表达式 >)
功能,返回指定的工作区的数据库别名,若缺省 <数值表达
式 >,则默认当前工作区 ;如果指定的是空闲工作区,其值
是空字符串,
1、记录号测试函数
RECNO(<数值表达式 >)
功能,返回在指定工作区上所打开数据库的当前记录号,
工作区由 <数值表达式 >指定。若省略 <数值表达式 >,
系统默认当前工作区。
2、文件首尾标识函数
BOF(<数值表达式 >)
功能,测试在指定的工作区中,数据库的记录指针是否指
向文件起始标识或文件结束标识。若记录指针到达文
件首、尾标识,函数返回逻辑值,T.;否则,返回,F.。
若省略数值表达式,则默认当前工作区。
二、测试记录指针
3、逻辑删除测试函数
DELELE([<数值表达式 >])
功能,
返回在指定工作区打开数据库的当前记录是
否已经标上删除标记。若该记录已被删除,函
数返回逻辑值,T.;否则,返回,F.。若省略数
值表达式,则默认当前工作区。
6.2.1 设立数据库关联
一、用关键字表达式设立关联
SET RELATION TO <关键字表达式 > INTO <别名 >
[ADDITIVE]
命令注释,
(1) 使用此命令之前,必须打开有关数据库。在当前工作
区打开的数据库称为关联数据库,也称为父数据库。
用别名指定的其他工作区上的数据库称为被关联数据
库,也称为子数据库。
(2) 关键字表达式通常包括两个库文件的公共字段,被关
联的数据库必须按照关键字表达式索引。此时,当关
联数据库的指针重新定位时,被关联的数据库的指针
按索引文件中与关键字表达式相匹配的第一个记录定
位。
(3) 建立起关联之后,关联数据库的记录指针带
动被关联的数据库指针移动,反方向则不然,
(4) 若选用 ADDITIVE,则在保留原来建立的关联
基础上,增加新的关联,以此实现一个数据库
与多个数据库之间的关联,
(5) 不能建立数据库指针的环状关联,
两个函数
SUBSTR(<字串表达式 >,<数值表达式 1>[,<数值表达式 2>])
功能,返回字串表达式的子串,子串在字串中的起始位置
由数值表达式 1决定,长度由数值表达式 2决定,若数
值表达式 2缺省,则一直取到最后一个字符。
LEFT(<字串表达式 >,<数值表达式 >)
功能,从字串表达式最左边开始截取给定个数的字符。字
符个数由数值表达式确定,
二、非同名字段的关联
SET RELATION TO [RECNO( )|<数值表达式 >]
[INTO<别名 >] [ADDITIVE]
命令注释,
(1) 按记录号关联不要求索引。关联表达式使用记录号
函数 RECNO( ),表示关联数据库与被关联数据库的记
录号保持相等。
(2) 若选用数值表达式,两个数据库的记录号之间保持
表达式所定义的联系。
四、取消关联
三、按记录号设立关联
6.2.2 多数据库关联
三、注意事项
1、关联是有方向的。
2、不能建立数据库之间的环状关联。
数据库 3
数据库 4
数据库 1
数据库 2一、串接
数据库 2
数据库 1
数据库 3二、并接
6.3.1 数据库间记录更新
一、更新命令
UPDATE ON <关键字 > FROM <别名 > REPLACE <字段名 1>
WITH <表达式 1> [,<字段名 2> WITH <表达式 2>...]
[RANDOM]
命令注释,
(1) 关键字字段必须是两个数据库的同名字段或相同
语义字段。
(2) 更新对象写在 REPLACE短语的 WITH之前,将当前库
的字段替换成 WITH之后表达式的计算结果,表达式
通常包含别名数据库中的字段。可以同时更新多个
字段,各个 WITH短语用逗号分开。
(3) 若无 RANDOM选项,两个数据库都必须按关键字排序
或索引。若选用 RANDOM,则只需当前数据库 (目标库 )
按关键字排序或索引。
(4) 由于记录是根据关键字匹配来定位的,如果目标库
有多个相同关键字的记录,只更新第一个记录。如果
源数据库有多个相同关键字的记录,目标数据库的各
个匹配记录依次接受更新,前次更新的内容将被后面
的更新内容所覆盖,只能保留最后接受的值。
二,UPDATE与 SET RELATION比较
6.3.2 数据库的联接
JOIN WITH <别名 > TO <新数据库名 > FOR
<条件 > [FIELDS<字段名表 >]
命令注释,
(1) 命令首先将指针指向当前数据库的第一个记录,逐
个扫描别名工作区的数据库记录,将满足条件的记录
与当前记录首尾相接作为新数据库的一条记录。然后
指针指向当前数据库的下一条记录,重复比较连接,
直至处理完当前数据库的所有记录为止。
(2) 默认新数据库的扩展名为,DBF,FIELDS短语指
定新数据库的字段及字段顺序。若缺省 FIELDS短
语,则包括两个数据库的所有字段,当前工作区
的数据库字段在前。如果两个库有同名字段,联
接结果包括当前库该字段。如果超过数据库允许
的最大字段数 128,则截断后面的字段。
(3) 条件短语不可缺省,其中别名库的字段应以 <别
名 > -><字段名 >来标识。
(4) 此命令一次只能联接两个数据库,如果需要联
接多个数据库,必须分步进行。执行命令后,原
来两个数据库的记录均保持不变。
第七章 函数
7.1 数值计算函数
7.2 字符处理函数
7.3 日期类函数
7.4 数据类型转换函数
7.5 测试函数
7.1 数值计算函数
1、取整函数
INT(<数值表达式 >)
功能,计算出表达式的值,截掉小数,取其整数部分,不
作四舍五入处理。
2、四舍五入函数
ROUND(<数值表达式 >,<保留小数位 >)
功能,计算出数值表达式的值,对保留位后面的数值进行
四舍五入处理。如果函数中保留小数位是负值,表示
小数点左边的整数部分的舍入位数。
3、求平方根函数
SQRT(<数值表达式 >)
功能,计算出表达式的平方根值,只取正根。
4、求最大值、最小值函数
MAX(<数值表达式 1>,<数值表达式 2>)
MIN(<数值表达式 1>,<数值表达式 2>)
功能,MAX( )返回两个表达式中较大的值,MIN( )返回两
个表达式中较小的值。也可以求日期表达式的最大,
最小值。
5、求指数、对数函数
EXP(<数值表达式 >)
LOG(<数值表达式 >)
功能,EXP( )计算以自然数 e为底,表达式的值为指数的
幂,即返回 e 的值。 LOG( )计算表达式值的自然对数,
即返回 ln x的值,二者互为逆运算。
x
6、求余数函数
MOD(<表达式 1>,<表达式 2>)
功能,余数的正负号与 <数值表达式 2>相同。当两个表达
式为同号时,函数值为 <数值表达式 1>除以 <数值表达
式 2>得到的余数。当两个表达式为异号时,函数值为
<数值表达式 1>除以 <数值表达式 2>得到的余数再加上
<数值表达式 2>的值。
7.2 字符处理函数
1、宏替换函数
&<字符型变量 >[.]
功能,替换出字符型变量的内容,即 &的值是变量中的字
符串。如果该函数与其后的字符无明确分界,则要用
,.”作函数结束标识。宏替换可以嵌套使用。
2、求子串位置函数
AT(<字符串表达式 1>,<字符串表达式 2>)
功能,函数返回前面表达式字符串在后面表达式字符串中
的起始位置,若不包含,则函数值为 0。
3、求子串函数
SUBSTR(<字符型表达式 >,<起始位置 >[,<长度 >])
功能,从起始位置起,截取指定长度字符形成子字符串。
若缺省长度,则一直取到串尾。
4、求左子串函数
LEFT(<字符表达式 >,<数值表达式 >)
功能,从 <字符表达式 >最左边开始截取由 <数值表达式 >指
定个数的字符。
5、求右子串函数
RIGHT(<字符表达式 >,<数值表达式 >)
功能,从 <字符表达式 >最右边开始截取由 <数值表达式 >指
定个数的字符。
6、生成空格函数
SPACE(<数值表达式 >)
功能,产生指定数目的空格字符串。最大空格数是 254。
7、生成重复字符函数
REPLICATE(<字符型表达式 >,<数值表达式 >)
功能,把 <字符型表达式 >的值重复 <数值表达式 >指定的次
数,生成新的字符串。
8、大小写变换函数
LOWER(<字符表达式 )
UPPER(<字符表达式 >)
功能,LOWER( )将字符串中的字母一律变成小写字母。
UPPER( )将字符串中的字母一律变成大写字母,其
他字符不变。
9、求字符串长度函数
LEN(<字符串表达式 >)
功能,函数返回字符串所占字节数。
10、删除字符串左空格函数
LTRIM(<字符表达式 >)
功能,除去 <字符表达式 >所表示字符串的前导空格。
11、删除字符串右空格函数
RTRIM(<字符表达式 >)或 TRIM(<字符表达式 >)
功能,除去 <字符表达式 >所表示字符串尾部的空格。
12、字符串替换函数
STUFF(<字符表达式 1>,<起始位置 >,<字符个
数 >,<字符表达式 2>)
功能,从指定位置开始,用 <字符表达式 2>去替
换 <字符表达式 1>中指定的字符。替换和被替
换的字符个数不一定相等,如果 <字符个数 >为 0,
则直接插入。如果 <字符表达式 2>为空字符串,
则删除 <字符表达式 1>中指定字符。
8.1 内存变量及应用
8.1 内存变量
8.2 程序结构
8.3 选择结构
8.4 循环结构
8.5 程序实例
8.1.1 内存变量
一、内存变量的赋值
二、显示内存变量工作区
LIST MEMORY [TO PRINT]
DISPLAY MEMORY [TO PRINT]
命令注释,
(1) LIST为连续滚动显示; DISPLAY为分屏显示。
(2) 选用 TO PRINT短语时,将结果显示的同时送往
打印机输出。
三、保存内存变量
SAVE TO <文件名 > ALL
[LIKE|EXCEPT<通配符 >]
功能注释,
(1) 系统默认文件扩展名,MEM。
(2) 选用 ALL LIKE短语则只保存与通配符相匹
配的内存变量。选用 ALL EXCEPT短语则保存除了与通
配符相匹配之外的内存变量。
四、恢复内存变量
RESTORE FROM <文件名 > [ADDITIVE]
功能注释:
(1) 系统默认文件扩展名,MEM。
(2) 选用 ADDITIVE短语则保留现行内存变量,再把
文件中的变量添加进来。否则,覆盖原有的内存变量。
五、删除内存变量
格式 1:CLEAR MEMORY
格式 2:RELEASE <内存变量名表 >
格式 3:RELEASE ALL [ LIKE|EXCEPT<通配符 >]
格式 4:CLEAR ALL
功能注释,
(1) 格式 1清除内存中全部变量。
(2) 格式 2清除指定的内存变量。
(3) 选用 ALL LIKE短语则只清除与通配符相匹配的内
存变量。选用 ALL EXCEPT短语则清除与通配符相匹配之外的
内存变量 。
(4) CLEAR ALL为恢复系统初态命令。释放所有内存
变量,关闭所有各类文件。
六、存储与恢复屏幕映象
1、存储屏幕映象
SAVE SCREEN [ TO <内存变量 >]
命令注释:
(1)存储屏幕映象的内存变量为屏幕型 (S型 )。
(2)如果缺省 TO选项,则将当前的屏幕映象保存到内存缓
冲区中。
2、恢复屏幕映象
RESTORE SCREEN [FROM <内存变量 >]
命令注释,
(1) FROM短语指出原来存储屏幕映象的 S型内存变量名。
(2) 如果缺省 FROM短语,则从内存缓冲区恢复屏幕映象。
8.1.2 数组
一、数组的定义与使用
1、数组的定义
DIMENSION <数组名 > (<数值型表达式 >
[,<数值型表达式 >])[,<数组名 > (<数值型
表达式 > [,<数值型表达式 >])...]
例,dimension A(10),X(2,3)
2,数组的使用
例,A(10),X(3,2)
A (1) 123
A (2),OK,
A (3),T,
A (4)
A (5)
A (6)
A (7)
A (8)
A (9)
A (10)
X (1,1), 北京,, 沈阳, X (1,2)
X (2,1), 南京,, 广州, X (2,2)
X (3,1), 成都,, 兰州, X (3,2)
X (1,1),北京,
X (1,2),沈阳,
X (2,1),南京,
X (2,2),广州,
X (3,1),成都,
X (3,2),兰州,
X(1)
X(2)
X(3)
X(4)
X(5)
X(6)
二、文件数据与数组数据之间的数据交换
1、库文件数据复制成数组数据
SCATTER [ FIELDS <字段名表 >] TO <数组名 >
命令注释:
此命令将当前数据库当前记录的内容从指定字
段表中的第一个字段内容开始,依次复制到从数组第
一个元素开始的单元中,如果数组元素个数少于字段
数,系统自动建立符合复制要求的数组。
2、数组数据复制成文件记录
GATHER FROM <数组名 > [ FIELDS <字段名表 >]
命令注释:
该命令将数组中的一组数据替换当前打开的数据库
文件的当前记录。从第一个数组元素开始,依次向指定
的字段名表中的字段填写数据。有字段名表选项时,向
指定的字段中依次填写;如果没有字段名表选项,则依
次向各数据项填写;如果数组元素个数多于记录中字段
的个数,则多余部分被忽略。
8.2 Foxbase+程序结构
8.2.1 程序的建立与运行
8.2.2 非格式化输入 /输出命令
8.2.3 Foxbase+程序结构
8.2.4 顺序结构
8.2.1 程序的建立与运行
一、程序的建立与修改
1、程序设计的
一般过程 分析任务需求
画程序框图
编写程序清单
上机调试
运行
2、程序的建立与修改
MODIFY COMMAND <文件名 >
功能注释,
(1) 系统默认文件扩展名,PRG。
(2) 执行该命令时,系统首先检索磁盘文件,如
果此文件存在,则调入内存编辑修改;若不存在,则建
立一个新的空文件等待编辑。
(3) 编辑完毕可用 Ctrl+W或 Ctrl+END存盘退出,
用 ESC或 Ctrl+Q放弃编辑返回圆点提示符。
(4) 此命令也可以用以编辑其他的文本文件,只
是在指定文件名时扩展名不能省略。
二、程序的运行
DO <程序文件名 >
命令注释,
(1)可省略扩展名,PRG,由系统默认。
(2)在某一个程序中调用另一个程序作为子程
序同样使用 DO语句。
一、非格式化输入命令
1、字串输入命令
ACCEPT [<字符表达式 >] TO <内存变量 >
功能注释:
(1)从屏幕的当前光标处开始显示 字符表达式 提示信
息,然后暂停程序的运行,等待用户输入一字串。
(2)系统将用户的输入一律视为字符串,输入时不必
加定界符,以回车结束输入。
(3)系统将用户的输入的字符串存入内存变量,程序
继续执行。
8.2.2 非格式化输入 /输出命令
2、数据输入命令
INPUT [<字符表达式 >] TO <内存变量 >
功能注释,
(1) 用户输入的数据可以是数值型,逻辑型、
日期型或字符型,以回车结束输入。
(2) 输入字符串时必须加定界符,输入逻辑型
常量时要用圆点定界如 (.T.,.F.),输入日期型数据
时要用转换函数,如 CTOD("12/27/62")。
(3) INPUT一般是用来是用来输入数值型数据。
3、等待语句 (字符输入 )
WAIT [<字符表达式 >] [ TO <内存变量 >]
功能注释,
(1) 输入字符不加定界符,输入后立即执行,无需
回车,无论输入何内容均作为字符型数据存储到内存变
量。如果直接回车,内存变量内容则为空字符。
(2) 若不用 TO<内存变量 >选项,输入的单字符则不
保留。如果语句中省略提示信息,系统默认的提示信息
是, 键入任意键继续,..”。
二、非格式化输出
/ 表达式
三、控制命令执行的中间结果是否显示
SET TALK ON|OFF
选择 ON则每条命令的执行结果显示;选
择 OFF则不显示。
系统默认为 ON。
8.2.3 FoxBASE+的程序结构
1、输入部分:
从键盘或其他设备输入运算所需的数据。
程序一般由三大部分组成:
2、运算处理部分:
程序控制的主要内容,一般有三种程序结构:
顺序结构、分支结构、循环结构。
3、输出部分:
通过屏幕或打印机显示运算结果。
8.2.4 顺序结构
1、清屏命令
CLEAR
此命令清除显示器屏幕上的全部内容。
2、注释命令
*[NOTE] <注释文字 >
[<语句 >] && <注释文字 >
功能注释,
(1) 用 *或 NOTE开头的行为注释行。注释信息不加定
界符,运行时不执行。
(2) 在语句后面用 &&短语,表明其后的内容是注释。
3、结束和返回语句
CANCEL
RETURN [TO MASTER]
功能注释,
(1) CANCEL是程序终止语句,表示结束程
序运行,返回点命令状态或主机操作系统。
(2) RETURN表示结束所在程序的运行,返
回到调用本程序的上一级程序、点命令状态或
主机操作系统。
(3) 在多层嵌套的情况下,若不选用 TO
MASTER短语,则逐层返回;如果选用该短语,
则直接返回到最外层调用语句 DO的下一条语句
继续执行。
8.3 选择结构
8.3.1 条件语句
IF <条件 >
<语句序列 1>
[ELSE
<语句序列 2>]
ENDIF
ENDIF后语句
语句序列 1
条件?


语句序列 1
ENDIF后语句
语句序列 2
真 假条件?
例 1:编一程序查询职工工资
Set talk off
Clear
Use zgjk
Accept,请输入职工姓名:” to name
Locate for 姓名 =name
If,not.eof( )
,姓名:” +姓名
??“基本工资:” +str(基本工资,6,2)
Else
?“查无此人!”
Endif
use
DO CASE
CASE <条件 1>
<语句序列 1>
CASE <条件 2>
<语句序列 2>
CASE <条件 n>
<语句序列 n>
[OTHERWISE
<语句序列 n+1>]
ENDCASE
… … … …
...
Endcase后面语句

条件 1? 语句序列 1
条件 2? 语句序列 2
条件 n? 语句序列 n
otherwise 语句序列 n+1








8.3.2 选择 (情况 )语句
Set talk off
input,请输入 x:” to x
do case
case abs(x)=1
y=0
case abs(x)<1
y=1
case abs(x)>1
y=-1
endcase
,y=,,y
set talk on
例 3:接收从
键盘上输入
一个数 x,求
y:
1,|x|<1
y= 0,|x|=1
-1,|x|>1
8.4 循环结构
8.4.3 多重循环
8.4.1 循环的概念
8.4.2 循环语句 DO WHILE
8.4.1 循环的概念
1、什么是循环?
循环是程序中的部分语句重复执行,因此程序的
循环结构也称为重复结构。
(1) 循环的开始。即循环从何处开始。
(2) 循环的初始条件。即循环从什么状态开始执行。
(3) 循环状态的变化。循环开始执行后,状态必须
有变化,以使循环达到一定条件后终止。
(4) 循环的终止条件。循环必须有明确的结束条件,
并且循环执行过程中必须有可能达到循环的结束条件,
以避免死循环。
2、循环结构必须具备的条件:
DO WHILE <条件 >
<语句序列 >
[LOOP]
[EXIT]
ENDDO
条件?
循环体
enddo
Enddo后面的语句


8.4.2 循环语句
条件?
enddo

循环体

Enddo后面语句
LOOP
EXIT
LOOP,EXIT
的作用
Use zgjk
do while,not,Eof( )
if 性别 =?女’
replace 基本工资 with 基本工资 +80
else
replace 基本工资 with 基本工资 +50
endif
skip
enddo
use
return
例,三、八节就要到了,在 zgjk.dbf库中为女性职
工基本工资加 80元,为男性加 50元。
8.4.3 多重循环
DO WHILE <条件 1>
<语句序列 1>
DO WHILE <条件 2>
<语句序列 2>
DO WHILE <条件 3>
<语句序列 3>
ENDDO
ENDDO
ENDDO
8.5 程序应用实例
8.5.1 记录查找
8.5.2 数据库连接
8.5.3 数组的应用
8.5.4 多工作区的数据运算
第九章 应用系统程序设计
9.1 格式设计
9.2 子程序与过程文件
9.3 应用系统开发实例
9.1 格式设计
9.1.1 格式设计命令
9.1.2 屏幕格式文件
9.1.3 菜单设计
9.1.1 格式设计命令
一、清除屏幕
1,CLEAR
功能:清除整个屏幕 。
2,@ X1,Y1 CLEAR [ TO X2,Y2]
功能:清除屏幕上从 (X1,Y1)到 (X2,Y2)的矩形区
域。缺省 (X2,Y2)时,默认为 (24,79),即屏幕右下角。
3,@X,Y
功能:清除屏幕上第 X行从 Y列到 X尾的区域。
二、格式化输出
@ X,Y SAY <表达式 > [ PICTURE <格式描述 > ]
[ FUNCTION <功能符表 >]
功能:
从屏幕的 (X,Y)开始,按 PICTURE后的 格
式描述 和 FUNCTION后的 功能符表 规定的格式显
示 SAY后的表达式。
例:
clear
n1=123.456
c1=“xy19mn”
d1=ctod(“08/15/95”)
l1=.y.
@10,10 say n1 picture,@CX$$$$$.$$”
@11,10 say -n1 picture,@CX****.*”
@12,10 say n1 picture,@B999.99”
@13,10 say c1 picture,!!!!!”
@15,10 say d1 picture,@E”
@16,10 say l1 picture,L”
return
三、格式化输入
@ X,Y [SAY <表达式 > ] GET <变量 > [ PICTURE
<格式描述 > ][FUNCTION<功能符表 >][RANGE<下
限 〉,<上限 >][VALID <条件 >]
READ
功能:从屏幕的 (X,Y)开始,显示 SAY后的表达式,空一格后接着
显示 GET后变量的值。
当执行到 READ命令时,则使显示的 GET变量值为反相显示,
光标将落在反相显示区,暂停程序的运行,等待用户输入。若用
户输入的值小于 RANGE后的 下限 或 大于 上限 时,则提醒数据超出
范围,按空格后重新输入。若输入值使 VALID后的 条件 为假,则
提醒用户数据无效,按空格后重新输入。
注释:
(1) GET后的变量可以是数值型、字符型、日期型
或逻辑型的变量,该变量称为 GET变量。可以是内存变量,
也可以是字段变量。若是前者,则必须先定义;若是后者,
则对应的数据库文件必须打开,且当前记录必须是有效记
录。
(2) RANGE后的下限,上限 用 来控制输入数据值的
范围。也可为日期型,必须和 GET后变量类型相同。
(3) VALID后的 L型表达式是用来控制输入数据必须
符合某个条件,即输入的数据必须使该表达式为真。否则,
不接受输入数据。
例,clear
n1=123.456
c1=“xy19mn”
d1=ctod(“08/15/95”)
l1=.y.
@10,10 get n1 picture,99999.99” ;
range 100.00,800.00
@11,10 get c1 picture,AAAAAA”
@12,10 get d1 picture valid;
d1<=ctod(“12/31/99”).and.;
d1>=ctod(“01/01/99”)
@16,10 get l1 picture,L”
wait,看清后按任一键!,
read
n1,c1,d1,l1
return
9.1.2 屏幕格式文件
屏幕格式文件的建立
Use zgjk
append blank
clear
@ 4,5 say ?职工姓名 ‘ get 姓名
@ 4,21 say ?性别 ’ get 性别
@ 5,5 say ?职称 ’ get 职称
@ 5,21 say ?出生日期 ‘ get 出生日期
read
屏幕格式文件的打开
SET FORMAT TO [<格式文件名 >]
Use zgjk
clear
set format to fzg
append blank
set format to
9.1.3 菜单设计
@ X,Y PROMPT <字符型表达式 1>
[ MESSAGE <字符型表达式 2>]
MENU TO <变量 >
SET MESSAGE TO <数字型表达式 >
功能:
@ X,Y PROMPT 从屏幕的 (x,y)处开始显示字符型
表达式 1,同时字符型表达式 2将显示在 set message to
<数字型表达式 >所指定的行上 (详细注释 )。
MENU 激活由 @X,Y prompt所定义的菜单,光带将
出现在 菜单上,等待用户选择菜单项。
Set message to 用于指定 @x,y prompt 中字符型
表达式 2显示的位置。
9.2 子程序与过程文件
9.2.1 子程序设计与使用
9.2.2 过程文件与过程调用
9.2.3 自定义函数
9.2.1 子程序设计与使用
一、子程序
子程序是 Foxbase+的一个相对独立的程
序段,它可以独立运行,也可以被其他程
序调用。
1、子程序的调用
DO <子程序名 > [ WITH <参数表 >]
2,子程序返回
RETURN [ TO MASTER ]
3、子程序的嵌套
**ex.prg
Set talk off
?这是主程序

do ex1
?这是主程序

set talk on
return
**ex1.prg
”这是子程序 1”
do ex2
?这是子程序 1?
do ex3
?这是子程序 1?
set talk on
return
** ex2.prg
,这是子程序 2”
return
** ex3.prg
?这是子程序 3?
return to mast
二、参数传递
1、参数定义
PARAMETERS <参数表 >
2,参数传递
DO <程序名 > WITH <参数表 >
注,parameters 后的参数表被称之为形式参数
(简称形参); do with 后的参数表称之为实际参数(简
称实参)。程序执行后,用实参取代形参,即出现形参的
地方一律用实参代替。
Set talk off
s=0
k=1
do while k<=10
s=s+k
k=k+1
enddo
,s=“,s
set talk on
return
Parameters n
Set talk off
s=0
k=1
do while k<=n
s=s+k
k=k+1
enddo
,s=“,s
set talk on
return
三、全局变量与局部变量
1、局部变量
局部变量全部是自动说明的。只要在程序中用赋值
方式给某个内存变量赋予一个值,该变量就算定义了,并
被自动认为局部变量。对于用, DIMENSION”命令定义的数
组也默认为局部变量。
局部变量只在当前程序及其下属子程序中有效,退出
当前程序后变量自行消失。
PUBLIC <变量表 >
说明:内存变量表中可以含有内存变量名和数组说
明。但不能是已被说明为局部变量的内存变量或数组。
全局变量可在任何程序或过程中使用,即使程序结
束,返回到 foxbase点提示符后,这些变量仍保持其类型
和值,并可继续使用。只有执行 CLEAR MEMORY,RELEASE、
QUIT等操作后才能被释放。
2、全局变量
3、隐藏内存变量
PRIVATE <变量表 >
PRIVATE ALL [ LIKE | EXCEPT <通配符变量名 >]
将符合指定要求的内存变量或数组隐藏起来,即暂
时停止这些变量的使用,但它们依然存在。
如果在某个程序或过程中隐藏了某些内存变量,在
该程序或过程中就可以定义与被隐藏的内存变量同名的
新内存变量。这些同名的内存变量只在本程序或过程中
起作用,退出本程序或过程中就不能使用。
set talk off
n1=0.00001
n2=1000000
c1='father'
c2='mother'
disp memo
"这是主程序 tt"
wait
do tt1
disp memo
"这是主程序 tt"
set talk on
return
private all like n*
public gf,gm
n1=222
n2=0.5555
c1='son'
c2="daughter"
c3='brother'
gf="grandfather"
gm="grandmother"
disp memo
"这是子程序 tt1"
wait
9.2.2 过程文件与过程调用
一、过程与过程文件
1、过程的定义
PROCEDURE 过程名
[PARAMTERS 形参 1,形参 2,…,形参 n]
过程体
RETURN
2、过程文件的建立
可使用 MODI COMM命令建立,每个过程文件中最多
可以存放 128个过程。数据库管理系统可以建立若干个
过程文件,但任何时候只有一个过程文件能被使用 (使
用前要打开 )。
二、过程的调用
1、打开过程文件
SET PROCEDURE TO 过程文件名
打开指定的过程文件。被打开的过程文件中的
所有过程都可以调用,未打开的过程文件中的过程不
能调用。
2、调用过程
DO 过程名 [WITH 实参 1,实参 2,…,实参 n]
调用当前已打开的过程文件中指定过程名的那
个过程。即先用实参依次替换过程体中所有对应形
参,然后执行过程体,当执行到 RETURN命令后,将
返回到调用处。
**main.prg
set talk off
x=100
y=5
set procedure to;
procfile
do add with x,y
do sub with x,y
do mlt with x,y
do dvd with x,y
set procedure to
set talk on
return
**procfile.prg
procedure add
parameters x,y
x,'+',y,'=',x+y
return
procedure sub
parameters x,y
x,'-',y,'=',x-y
return
procedure mlt
parameters x,y
x,'*',y,'=',x*y
return
procedure dvd
parameters x,y
x,'/',y,'=',x/y
return
3、关闭过程文件
SET PROCEDURE TO
CLOSE PROCEDURE
打开指定的过程文件。被打开的过程文件中的所
有过程都可以调用,未打开的过程文件中的过程不能调
用。
9.2.3 自定义函数
一、自定义函数的定义方法
在一个程序中只存放一个自定义函数
[PARAMETERS 形参 1,形参 2,…,形参 n]
函数体(命令序列)
RETURN 表达式
其中表达式的值就是该函数调用后返回的
函数值。函数体是由 Foxbase的各种命令组成的一
个程序段,但不允许出现打开、关闭库文件,SET
FILTER,SET RELA,SELECT,@… GET… 。
二、自定义函数的调用
调用程序中的自定义函数
自定义函数名 ([实参 1,实参 2,…,实参 n])
用实参替换函数体中对应的形参,再运行函数
体,返回函数值。
这里的自定义函数名就是存放该函数的程序文
件名。
**main’.prg
set talk off
x=100
y=5
set procedure to;
funcfile
x,'+',y,'=',
add(x,y)
x,'-',y,'=',
sub(x,y)
x,'*',y,'=',
mlt(x,y)
x,'/',y,'=',
dvd(x,y)
set procedure to
set talk on
return
**funcfile.prg
procedure add
parameters
x,y
return x+y
procedure sub
parameters
x,y
return x-y
procedure mlt
parameters
x,y
return x*y
procedure dvd
parameters