第 3章 FoxPro应用基础
第 3章 FoxPro应用基础
3.1 数据库文件的建立
3.2 数据库文件内容的输出
3.3 FoxPro的有关语法规定
第 3章 FoxPro应用基础
3.1 数据库文件的建立
3.1.1 几个常用符号的约定
本书使用了几个常用符号,这些符号的含义约定如下,
(1) 〈 〉, 必选参数表示符 。
由这一对符号括起的部分是用户必须要提供的参数,
但不要输入这对表示符本身 。
(2) [ ], 任选参数表示符 。
由这一对符号括起的部分由用户决定是否选择可以
选,也可以不选 。 括起的部分也称作选择项或可选项,但
不包括这对表示符本身 。
第 3章 FoxPro应用基础
(3) /,二选一表示符 。
表示用户可从本符号左右两项中选择一项。
3.1.2 改变默认盘和当前路径命令 —
—SETDEFAULTTO
刚引入 FoxPro时, FoxPro所在盘为默认盘, 所在目
录为当前目录 。 本命令可改变默认盘和当前目录 。
命令格式, SET DEFAULT TO[ 〈 字符表达式 〉 ]
其中, 〈 字符表达式 〉 可以是盘号, 盘号与目录名,
子目录名, DOS中路径符 \或 。
第 3章 FoxPro应用基础
3.1.3 数据库文件结构的建立命令 ——CREATE
定义库文件的文件名和每个字段的字段名, 字段
类型, 字段宽度的工作称为建立库文件的结构 。 建立
库文件结构的命令为 CREATE。
命令格式, CREATE [ 〈 文件名 〉 /?]
CREATE命令的功能为, 定义一个数据库文件的结
构,并把该文件存入到磁盘目录中去 。 所建文件的文件
名由命令给定,若缺省盘号,所建库文件将存入默认盘
若缺省扩展名,系统默认其扩展名为 DBF。
第 3章 FoxPro应用基础
下面介绍建立库文件, 职工 DBF”结构的 步骤,
① 启动计算机,使系统处于 FoxPro命令状态 。
② 把数据盘插入 A驱动器 。
③ 设置 A盘为默认盘 。 键入命令,
SET DEFAULT TO A
④ 建立, 职工 DBF”库文件,键入命令,
CREATE职工
系统开始建立库文件“职工 DBF”。屏幕显示如图 3—1所
示。
第 3章 FoxPro应用基础
图 3—1 CREATE命令对应的屏幕
第 3章 FoxPro应用基础
光标在 Name下,等待用户输入第一字段的字段名,我们
键入, 职工号, 。 按回车键后,光标移至 Type下,用户可直
接按表示所选类型的字母,N,F,D,L,C,M;也可按
空格键 。 此时,在类型下出现一个小菜单,内容为各字段类
型,用上, 下箭头键移动光标到所需类型,再按回车键即选
中该类型 。 对于本字段来说,我们选择数字型 (Numeric),光
标自动移到 Width下,按计划键入宽度值 ——6 。 按回车键后,
光标移到 Dec下 。 由于该字段无小数,直接按回车键 (也可
键入零后,再按回车键 )。 此时,第一字段已定义完毕,光标
转向第二字段,等待用户定义 。
第 3章 FoxPro应用基础
以下各字段的定义步骤与定义第一字段相似,只是对于
日期型, 逻辑型和记忆型字段不要求用户输入宽度值
对于非数字型字段,也不要求输入小数宽度 。
第 3章 FoxPro应用基础
3.1.4 打开数据库文件操作命令 ——USE
要使用一个库文件, 必须先打开之 。 打开库文件的
命令为 USE。
USE命令基本格式,USE〈 库文件名 〉
若缺省了库文件名的扩展名,系统默认为 DBF。
执行了本命令后,命令中所指库文件即被打开,同时也
关闭掉原来打开的库文件 。
如果该库文件有记忆型字段, 则同时打开与库文件
同名, 扩展名为,FPT的记忆文件 。
第 3章 FoxPro应用基础
3.1.5命令的注释 ——&&子句
在命令的后面,可用 &&〈 注释内容 〉 子句为其注释 。
系统不执行 &&子句,它仅供用户阅读用 。 &&与前面的
内容之间必须有空格分隔 。
第 3章 FoxPro应用基础
3.1.6 记录指针及其操作命令 ——GO,SKIP
打开一个库文件后,系统立即给这个库文件提供一
个记录指针,简称指针 。 指针里存放的是一个十进制数,
如 5,81等 。 它是某个记录的记录号,这时表明记录指针
指向了这个记录,而这个记录也被称为当前记录 。 若记
录指针为 52,则说明记录号为 52的记录为当前记录 。
在刚打开一个库文件时,记录指针指向首记录 。
第 3章 FoxPro应用基础
对数据库文件的操作是以当前记录为基准的 。 在
执行某些命令时,会自动改变当前记录 。 在这里,我们首
先介绍专门用于改变当前记录的两条命令,这就是移动
指针命令 。
1,指针的绝对移动命令 ——GO,GOTO
2,指针的相对移动命令 ——SKIP
第 3章 FoxPro应用基础
3.1.7 追加记录操作命令 ——APPEND
命令格式,APPEND[ BLANK]
功能,在库文件的尾部加入新记录 。 当库文件中已有 n
个记录时,新记录号为 n+1。
此命令执行步骤如下,
① 令指针内容为最大记录号加 1。
② 若命令中有选择项 BLANK,则当前记录为空记录,
命令执行完毕,增加了 1个空记录,系统回到 FoxPro命令状
态 (仍在命令窗口下 )若命令中无选择项 BLANK,则继续执
行步骤 ③ 。
第 3章 FoxPro应用基础
③ 在屏幕上打开一个编辑窗口 。 在编辑窗口, 竖式
显示库文件的记录结构,光标停在第一字段处,等待用户逐
个字段地输入本记录内容 。 以, 职工 DBF”库文件为例,
现欲对其追加新记录,则在命令窗口中打入如下两条命令,
USE职工
APPEND
执行后,在屏幕中开出一编辑窗口,内容如图 3—2,等待
用户为新记录输入内容 。
第 3章 FoxPro应用基础
图 3—2 执行 APPEND命令后的编辑窗口
第 3章 FoxPro应用基础
当输入的某字段数据与该字段不符时 (类型不符, 超
过记录范围等 ),系统拒绝接受,并响铃提醒用户重新输入 。
当光标在记忆型字段时,若不想输入数据,按回车键把光标
下移一字段 (按, ↓” 键也可 )。 若要输入数据,由于记忆型
字段数据实际存储在与库文件同名, 扩展名为, FPT”的
记忆文件中,因此,必须先按 ^PgDn控制键 。 按下 ^PgDn控
制键后,系统立即在屏幕上覆盖一个编辑记忆型字段的窗
口 。 用户在该窗口中为该记忆型字段输入内容 。
记忆型字段内容输入完毕后,用 ^W控制键结束之 。
系统把输入的数据存入记忆文件,取消编辑记忆型字段窗
口,恢复原编辑窗口 。 本记录数据输入完后,记录指针
第 3章 FoxPro应用基础
内容自动加 1,在编辑窗口上又出现当前记录结构,
等待用户继续追加下一记录内容 。
在追加记录中,用户可用 PgUp,PgDn控制键上, 下
翻动记录 。
全部记录追加完毕后,用 ^W或 ^End控制键结束
APPEND命令 。 此时,编辑窗口被撤消,系统又回到命令
窗口 。 (注意,必须执行关闭库文件操作,磁盘上的该库
文件才包含新追加的内容, 见本章 3.110节 。 )
对于 C型和 M型字段来说,输入的英文大, 小写字母
是不等价的 。
第 3章 FoxPro应用基础
3.1.8 记录的插入操作命令 ——INSERT
插入记录操作可分为两步:首先,把记录指针移到
所需位置然后,在此位置插入一记录 。 这里,只介绍插入
记录命令 INSERT。
命令格式,INSERT[ BLANK][ BEFORE]
当无 BEFORE任选项时,在当前记录后插入新记录
若有 BEFORE,则记录插在当前记录前,且指针指向插入
记录 。
第 3章 FoxPro应用基础
当有 BLANK任选项时,系统自动在规定位置插入一
空记录,命令执行完毕当无 BLANK时,系统在屏幕上开
出编辑窗口 (形式与 APPEND的窗口相同 ),等待用户输
入记录内容 。
INSERT命令可以插入多条记录,插入完毕后,用 ^W
或 ^End控制键结束本次 INSERT命令 。
第 3章 FoxPro应用基础
3.1.9 给当前打开库文件追加记录命令
——APPENDFROM
本命令使系统自动从一指定库文件中读出一些记录,
并追加到当前打开库文件中 。
命 令 基 本 格 式,APPENDFROM〈 库 文 件 名 〉 /?
[ FIELDS〈 字段名清单 ]
[ FOR〈 条件 〉 ]
其中的 〈 库文件名 〉 为读出数据的库文件,也称源文
件,默认扩展名为 DBF。 被追加记录的库文件是当前打开
库文件,也称目的库文件 。
第 3章 FoxPro应用基础
其中,FOR〈 条件 〉 项,简称条件项,将在本章 4.4节
中介绍 。
若目的库文件中某字段的宽度小于源库文件对应
字段的宽度,读入数据时,字
符型字段超长部分被截去,数字型字段只加入一串
,*” 。
FIELDS〈 字段名清单 〉 项,简称字段名清单,将在
本章 4.4节中介绍。
第 3章 FoxPro应用基础
3.1.10 关闭数据库文件操作命令 ——USE
在内存中的被打开库文件可能受到了各种修改,如用
APPEND命令追加了记录,用 INSERT命令插入了记录等,但
磁盘上的这个库文件并未同时得到修改,关闭文件意味着
用新修改过的文件去替换磁盘上的原文件 。 因此,对打开
库文件进行了修改操作后,必须执行关闭操作 。
关闭文件的命令也是 USE。
命令格式,USE
执行了此命令后,打开的库文件将从内存中消失 。
注意,USE〈 库文件 〉 命令,在打开命令中指定的库文
件时,也关闭了原打开库文件 。
第 3章 FoxPro应用基础
3.1.11 决定查询技术命令 —— SETOPTIMIZE
命令格式,SETOPTIMIZEON/OFF
功能,此命令决定,在进行数据查询时,是否使用
Rushmore优化技术 。 OPTIMIZE为 ON时,使用优化技术为
OFF时,不使用 。
Rushmore是 FoxPro使用的一种优化查询技术 。 该技
术大致为,执行一使用 Rushmore技术的命令时,首先选出满
足 FOR条件的所有记录,然后再处理这些记录,从而改善处
理性能 。
在 OPTIMIZE 为 ON 情 况 下,若 命 令 中 选 用
NOOPITIMIZE项,也不使用 Rushmore技术 。
第 3章 FoxPro应用基础
可使用 Rushmore技术改善性能的命令有,
AVERAGE COUNT LABEL SCAN
BROWSE DELETE LIST SORT
CALCULATE DISPLAY LOCATE SUM
CHANGE EDIT RECALL TOTAL
COPYTO EXPORT REPLACE
COPYTOARRAY INDEX REPORT
第 3章 FoxPro应用基础
3.2 数据库文件内容的输出
3.2.1 列表输出命令 —— LIST
利用 LIST命令,可以输出库文件的结构和记录内容。
1,输出库文件结构
命令格式, LISTSTRUCTURE[ TOFILE〈 文件名 〉
/TOPRINTER] [ NOCONSOLE]
此命令用来输出打开库文件的结构 。 有任选项
,TOFILE〈 文件名 〉,时,库文件结构将输出到对应的磁
盘文件保存有任选项, TOPRINTER”时,将输出到打印机
打印 。 有任选项, NOCONSOLE”时,输出内容将不在屏

第 3章 FoxPro应用基础
桌面显示否则,将在屏幕桌面显示。
例 1 输出, 职工 DBF”库结构 。
USE职工
LIST STRUCTURE TO PRINTER
这个结果除列出了该库文件结构外,还在前部给出
了:库文件名, 已有记录个数, 最后更改日期及记忆
文件的大小 (需乘 512)。
在最后一行上给出记录宽度 。 这个宽度比各字段
宽度总和还多 1。 这个字节是系统自动在每个记录的最
前部增加的,用来存放删除标记, *” (见第 4章 4.2节 )。
第 3章 FoxPro应用基础
2,输出记录内容
命令格式, LIST[ OFF] [ 〈 范围 〉 ] [[ FIELDS]
〈 字段名清单 〉 ] [ FOR〈 条件 1〉 ]
[ WHILE〈 条件 2〉 ]
[ TOPRINTER/TOFILE〈 文件名 〉 ] [ NOCONSOLE]
[ NOOPTIMIZE]
无 OFF任选项,则同时列出记录号否则,不列出记录号 。
范围任选项缺省时,表示输出全部记录 。
字段名清单任选项缺省时,输出全部字段否则,输出所
列字段值 。
第 3章 FoxPro应用基础
条件任选项缺省时,输出范围内的全部记录 。
NOOPTIMIZE任选项,有此项时,不使用优化查询技
术否则,使用。
例 2 键入以下两条命令,
USE职工
LIST
后,在显示器桌面上的输出如表 2—1所示 。
第 3章 FoxPro应用基础
例 3 键入以下两条命令,
USE职工
LIST职工号,姓名,简历
在显示器桌面上的输出如表 2—2,记忆型字段内容
也实际输出。
采用 LIST命令输出内容时,将把输出内容全部逐行
输出。
第 3章 FoxPro应用基础
3.2.2 分页列表输出命令 ——DISPLAY
与 LIST命令相对应,DISPLAY也有两种格式,
(1) DISPLAYSTRUCTURE
[ TOFILE〈 文件名 〉 /TOPRINTER]
[ NOCONSOLE]
(2) DISPLAY[ OFF] [ 〈 范围 〉 ]
[[ FIELDS] 〈 字段名清单 〉 ] [ FOR〈 条件 1〉 ]
[ WHILE〈 条件 2〉 ]
[ TOPRINTER/TOFILE〈 文件名 ]
[ NOCONSOLE] [ NOOPTIMIZE]
第 3章 FoxPro应用基础
DISPLAY命令与 LIST命令的功能完全相同,在使用
时仅有两点差别,
① DISPLAY命令分页显示整个内容 。 用户看清一
页后,按任一键,系统就显示下一页内容,直至全部页显示
完毕 。
②当命令中缺省“范围”和“条件”项
时,DISPLAY命令只输出当前记录内容。
第 3章 FoxPro应用基础
3.3 FoxPro的有关语法规定
3.3.1 命令的一般形式
FoxPro的命令很多,各有不同的功能和形式 。 但其
中很多命令都具有一种类似的形式,称为命令的一般形
式 。 为了便于以后的讲述,我们在此介绍这种一般形式 。
以后在介绍具体命令时,凡与一般形式意义相同的部分
不再赘述 。 FoxPro命令的一般形式为,
命令字 [ 〈 范围 〉 ] [ 〈 表达式清单 〉 ]
[ FOR〈 条件 1〉 ] [ WHILE〈 条件 2〉 ]
第 3章 FoxPro应用基础
1,命令字
所有的命令都有一个命令字,这个命令字决定了此
命令的性质 。 命令字是一个英文动词,它表达了该命令
所要执行的操作 。 我们已经介绍过的命令字有,USE、
CREATE,APPEND, LIST和 DISPLAY等 。
2,FOR〈 条件 〉 和 WHILE〈 条件 〉 项
〈 条件 〉 是一个返回值为逻辑型的表达式,如,工资
< 100,姓名 =“王一民, 。 写成条件项为,FOR工资
< 100,WHILE姓名 =“王一民, 等,用 FOR或 WHILE开始
均可 。
第 3章 FoxPro应用基础
条件项的含义为,只对那些使表达式返回值为真 (.T.)的
记录进行命令规定的操作 。
3,范围项
范围任选项指出了命令所作用的记录范围,其值可
有如下五种选择,
ALL——范围为库文件中所有记录 。
NEXTn——范围为从当前记录开始的 n个记录,n是一
个具体的十进制数 。
RECORDn——范围仅为第 n号记录 。
REST——范围为从当前记录开始直到文件结束的
第 3章 FoxPro应用基础
所有记录。
缺省 ——若条件项同时缺省,不同命令有不同含义,或
等价于 ALL,或仅作用于当前记录 。
条件项以 FOR开始时,将对范围内符合条件的所有
记录进行操作条件项以 WHILE开始时,只要碰到一个不
符合条件的记录,不管剩下的范围内是否还有符合条件
的记录,都停止继续执行命令 。
第 3章 FoxPro应用基础
4,表达式清单
命令字必须是一条命令的第一项,而各任选项的顺
序可任意排列 。
一条命令的各部分之间必须有空格 (FOR/WHILE
与, 条件, 之间也必须有空格 ),但空格个数不限 。
一条命令的总长度 (包括命令中的所有空格 )不能
超过 254个字符 (一个汉字以两个字符计算 )。
第 3章 FoxPro应用基础
3.3.2 内存变量与常量
在 FoxPro中,除了字段变量外,还有一种变量,它存
在于内存之中,独立于数据库文件,称为内存变量 。 退出
FoxPro时,内存中的所有内存变量都将消失,不自动保存
到磁盘上 。
基本内存变量有字符型, 数字型, 日期型, 逻辑
型和屏幕型五种,没有记忆型内存变量 。
FoxPro还可建立内存变量数组,详见第 6章 。
FoxPro允许用户最多定义 3600个内存变量同时存
放在内存中 。
第 3章 FoxPro应用基础
用户可直接用内存变量名对内存变量进行访问 。
但若内存变量名与某字段变量名相同时,必须用如下格
式访问,
M-> 〈 内存变量名 〉 或 M〈 内存变量名 〉
1,定义内存变量的两种基本方法
内存变量必须先定义后使用 。 FoxPro中,有两种最
基本的定义内存变量法,它们是,
(1)STORE〈 表达式 〉 TO〈 内存变量名清单 〉
(2)〈 内存变量名 〉 =〈 表达式 〉
格式 (1)的功能是把语句中表达式的值赋给 〈 内存
第 3章 FoxPro应用基础
变量名清单 〉 中的所有内存变量格式 (2)的功能是把等
号右边 〈 表达式 〉 的值赋给等号左边的一个内存变量 。
例 1
STORE 245 TO A,B,C
执行了这个命令,内存变量 A,B,C中的值均是 245。
例 2
X=10
X=X+1
两条命令执行后,内存变量 X的值为 11
第 3章 FoxPro应用基础
2,常量的处理
定义内存变量时,如果把常量赋值给内存变量,系统
对常量的表示法有一些规定 。
(1)数字型常量可直接使用。
例, 3
X=236
(2)字符型常量必须用单引号, 双引号或方括号括
起,这些符号总称为字符括号 。 在汉字 FoxPro中,在其它
地方使用字符串常量时,一般也都需要用字符括号括起 。
例,4
Y=“工程师 A”
第 3章 FoxPro应用基础
(3)逻辑型常量必须用英文句点括起 。
例,5
Z=T
(4)日期型常量用花括号括起 。
例,6
STORE{12/25/92} TO XMAS
日期型常量也可用 CTOD函数,详见 3.34节,这里只给
出形式,
D=CTOD(“11/12/93”)
第 3章 FoxPro应用基础
3,输出内存变量的值
最简单的输出内存变量值的命令是? 和。
基本命令格式,?/〈 表达式 〉 [ AT〈 数字表达
式 〉 ]
此两命令均为输出命令,输出命令中 〈 表达式 〉 的
值 。 用,?, 命令时,在输出表达式值前首先执行一次
回车换行使用,??,,则直接输出 。
使用[ AT〈 数字表达式 〉 ]任选项时,该数字表达
式的值决定输出的起始列号。
第 3章 FoxPro应用基础
3.3.3 表达式
任何一个字段变量, 内存变量, 常量或函数都是表
达式,用操作符把表达式正确连接起来的式子也是表达
式 。 表达式值的类型称为表达式的类型 。 表达式的类
型与所含变量的类型有关,但还与所进行的操作有关 。
变量的类型不同,所能进行的操作也不同 。
FoxPro提供数字型, 关系型, 逻辑型和字符串型
等四类运算 。
1,数字型运算
第 3章 FoxPro应用基础
(1) 加法,+(单目运算时为, 正, )
(2) 减法,-(单目运算时为, 负, )
(3) 乘法,*
(4) 除法,/
(5)〖 WB〗 取模 (余数 ):%〖 DW〗
格式,〈 数字表达式 1〉 %〈 数字表达式 2〉
〈 数字表达式 1〉 为被除数,〈 数字表达式 2〉 为除数 。
此操作结果为两数相除的余数 。
被除数的小数位数决定了结果中的小数位数 。 除数值
为正,结果为正除数值为负,结果为负 。 除数不能为零 。
第 3章 FoxPro应用基础
(6) 指数,**或 ^
(7) 括号,()
数字型运算的运算顺序,① 括号 ② 单目运算 ③ 指数
运算 ④ 乘除取模运算 ⑤ 加减运算 。
2,关系型运算
关系型操作用于比较两个同类表达式 (非逻辑型 ),
结果是个逻辑值 。
(1)小于, (2)大于,> (3)等于,=
(4)不等,<>或用#
(5)小于等于,< = (6)大于等于,> =
第 3章 FoxPro应用基础
3,逻辑型运算
这类运算共有以下四种操作:
(1) 逻辑与,AND
(2) 逻辑或,OR
(3) 逻辑非,NOT
(4) 括号,()
逻辑型运算的运算结果是逻辑值 。
逻辑型运算的运算顺序,① 括号 ② 非运算 ③ 与运算
④ 或运算 。
第 3章 FoxPro应用基础
4,字符串型运算
字符串型运算包括两类操作 。
(1) 字符串连接运算,+,-
+运算是把两个字符串串接起来,形成一个新的字符
串 。 -运算也是把两个字符串串接起来,形成一个新的字
符串 。 但在 -(减 )运算时,前一字符串若有尾部空格,则把
尾部空格移到新字符串的尾部 。
如,“最后, +“结果, 得,“最后结果,
,最后, -,结果, 得,“最后结果,
第 3章 FoxPro应用基础
3.3.4 基本函数
FoxPro提供了很多函数 。 本节只介绍一些基本函
数, 其它见本书参考文献 [ 3] 。
1,算术运算函数
(1) ABS——绝对值函数
格式,ABS(〈 数字表达式 〉 )
ABS函数给出 〈 数字表达式 〉 值的绝对值。
(2) FV——零存整取函数
(3) INT——取整函数
(4) MAX——最大值函数
第 3章 FoxPro应用基础
(5) MIN——最小值函数
(6) MOD()——求模 (余数 )函数
(7) PI——π函数
(8) RAND——随机数函数
(9) ROUND——四舍五入函数
(10) SIGN——符号函数
(11) SQRT——平方根函数
2,字符运算函数
(1) &——宏代换函数
(2) AT——子串寻找函数
第 3章 FoxPro应用基础
(3)LEFT——
(4)LEN——字符串长度函数
(5)LOWER——变小写函数
(6)LTRIM——删除头部空格函数
(7)PROPER——首字符大写函数
(8)RIGHT——尾子串函数
(9)SPACE——空格函数
(10)SUBSTR——子串函数
(11)TRIM——去尾部空格函数
(12)UPPER——变大写函数
第 3章 FoxPro应用基础
3,日期和时间函数
(1)DATE——系统日期函数
(2)CMONTH——月份名函数
(3)MONTH——月份函数
(4)CDOW/DOW——星期几函数
(5)DAY——日期函数
(6)YEAR——年函数
第 3章 FoxPro应用基础
4,转换函数
(1)ASC——求 ASCII码函数
(2)CHR——求字符函数
(3)CTOD——字符型转换成日期型函数
(4)DTOC——日期型转换成字符型函数
(5)STR——数字型转换成字符型函数
(6)VAL——字符型转换成数字型函数
第 3章 FoxPro应用基础
5,状态检验函数
(1)BOF——文件起始函数
(2)EOF——文件结束函数
(3)FSIZE——求字段宽度函数
(4)FOUND——查找成功否函数
(5)RECNO——当前记录号函数
(6)COL——屏幕列坐标函数
(7)ROW——屏幕行坐标函数
(8)PCOL——打印机列坐标函数
第 3章 FoxPro应用基础
(9)PROW——打印机行坐标函数
(10)PRINTSTATUS——联机状态函数