第 2章 数据库管理系统基础知识
2.1 数据类型
2.2 数据存储
2.3 运算符及表达式
2.4 函数
2.5 命令退出
2.1 数据类型
1,字符型数据
13,备注型数据(二进制)
2,数值型数据
4,浮点型数据
5,双精度符型数据
7,逻辑型数据
6,货币型数据
3,整型数据退出
8,日期型数据
9,日期时间型数据
10,备注型数据
11,通用型数据
12,字符型数据(二进制)
1,字符型数据字符型数据 ( Character)是指用各种文字字符表示的数据,包括 26个英文大小写字母,10个阿拉伯数字、各种汉字、专用符号和空格等,最大长度可达 254个字符。
注意,如果将阿拉伯数字定义为字符型数据时,它不具备数学上的数值含义,不能参加数学运算,如电话号码,邮编等。
2,数值型数据数值型数据 (Numeric)是指可以进行算术运算的数据,包含 0~ 9
的阿拉伯数字、小数点与正负号,最大长度为 20位。在内存中,
数值型数据占用 8个字节。一般将需要参加数学运算的数据定义成数值型。
3,整型数据整型数据 (Integer)是不包含小数点部分的数值型数据,以二进制形式存储,占用 4个字节。
4,浮点型数据浮点型数据 (Float)是数值型数据的一种,在存储形式上采取浮点格式。它由尾数、阶数及字母 E组成。
5,双精度型数据双精度型数据 (Doub1e)是具有更高精度的数值型数据,占用 8
个字节的存储空间。
6,货币型数据货币型数据 (Currency)装入表示货币量的数据,占用 8个字节。
7,逻辑型数据逻辑型数据 ( Logic)是用来进行各种逻辑判断的数据,只有两个值,即真(,T.)和假(,F.),长度固定为 1位,占用 1
个字节。
日期型数据 (Date)是用来专门表示日期的数据。
存储格式为,YYYYMMDD”,共占用 8个字节。
8,日期型数据
9,日期时间型数据日期时间型数据 (Date Time)是描述日期和时间的数据 。 其字符存储格式为,YYYYMMDDHHMMSS”,保存在两个 4字节的整数中

10,备注型数据备注型数据 ( Memo)用于存放数据较长的字符型数据类型,固定占用 4个字节的内存空间,用来存放 Visual FoxPro的内部指针,
实际的数据存放在与数据表文件同名的,FPT文件中,并且所存放的内容只受磁盘空间的限制。
11,通用型数据通用型数据 (General)用于存储 OLE( Object Linking and
Embedding)对象,只能用于数据表中字段的定义。该字段包含了对 OLE对象的引用,而 OLE对象的具体内容可以是一个电子表格、文档、图片等。通用型数据长度固定为 4位,实际数据长度仅受磁盘空间的限制。
12,字符型数据(二进制)
13,备注型数据(二进制)
2.2 数据存储
2.2.1 常量
2.2.2 变量
2.2.5 对象、类和属性
2.2.3 数组
2.2.4 字段、记录、数据表退出
( 1) 字符型常量,用定界符( 单引号、双引号和方括号 )
括起来的字符串。
(示例:,ade”?568? [book],?book?的中文意思是‘书’。”

( 2) 数值型常量 (示例,538,-10.5)
( 3) 浮点型常量 (示例,-1.05E+20)
( 4) 日期型常量,表示一个确切的日期,用 大括号 作为定界符
,默认格式为 {mm/dd/yy}。
严格的日期格式,{YYYY-MM-DD}
(示例,{05/23/99},{2001-08-16})
( 5) 逻辑型常量 (示例,.t.,T.,f.,F.,Y.,N.,y.,n.)
( 6) 日期时间型常量 (示例,{05/16/99 12:00:00})
2.2.1 常量
2.2.2 变量
1,字段变量变量,在使用过程中其值可以改变的量。包括字段变量、内存变量、数组变量和系统内存变量。
( 1)字段变量隶属于数据表文件。
( 2)数据表是存在于计算机中的一个二维表格,数据表中的每一列称为一个字段,是数据表进行数据处理的基本单位;数据表中的每一行内容称为一条记录,由若干个相关联的字段组成。
( 3)在数据表中,字段必须先定义后赋值,然后才可以使用。
( 4)字段变量名由汉字、字母、数字和下划线组成,必须以字母或汉字开头。
( 5)字段变量的数据类型有 13种,与前面的数据类型相同。
2,内存变量
( 1) 内存变量,存在于内存中的变量,常被用来存储所需要的常数、中间结果或最终结果。变量名由汉字、字母、数字和下划线组成,必须由字母或汉字开头。
( 2)当 内存变量名与字段变量名相同 时,字段名优先于内存变量名,使用时可以在内存变量名前加上,M->”以示区别,但赋值时不能使用该前缀。
1)建立内存变量格式,STORE <表达式 > TO <内存变量名表 >
或 <内存变量名 >=<表达式 >
示例,B=6
STORE B+3 TO C
STORE,中国” TO A,B,C
格式,LIST / DISPLAY MEMORY [LIKE <通配符 >] [TO PRINTER /
TO FILE <文件名 >] [NOCONSOLE]
说明,?通配符指“?”和,*”
<文件名 >的扩展名为,TXT
LIST和 DISPLAY区别为,LIST连续显示; DISPLAY分页显示。
示例,A=“中国”
A1=5
LIST MEMORY LIKE A*
2)显示和打印全部的内存变量格式,SAVE TO <内存变量文件名 >/TO MEMO <备注型字段 > [ALL
LIKE/ALL EXCEPT <通配符 >]
说明:内存变量文件的扩展名为,MEM
示例,SAVE TO AA
SAVE TO MM ALL LIKE X*
SAVE TO BB ALL EXCEPT?Y
3)建立内存变量文件
4)内存变量文件的调入格式,RESTORE FROM <内存变量文件名 >/FROM MEMO <备注型字段名 > [ADDITIVE]
示例,RESTORE FROM MM
RESTORE FROM BB ADDITIVE
格式,RELEASE <内存变量名表 >
或 RELEASE ALL [LIKE <通配符 >/EXCEPT <通配符 >]
或 CLEAR MEMORY
或 CLEAR ALL
说明,?释放指定的内存变量,但不清除系统内存变量;
CLEAR ALL在关闭所有文件的同时清除所有的内存变量。
示例,RELEASE ALL
RELEASE X,Y,Z
RELEASE ALL LIKE A*
5)释放内存变量
2.2.3 数组
( 1) 数组变量,一组变量的集合,这些变量的数据类型可以不同,每个数组元素都可以通过一个数值下标被引用,相当于一个内存变量。
( 3) 一维数组,各个元素按线性排列;
二维数组,类似于一个数据表,第一维是行,第二维是列。
( 2)数组元素的 数据类型 是通过所赋值的数据类型来确定的。
3.系统内存变量系统内存变量 是系统已经定义好的一些变量,通常以下划线开头。
1,数组的定义命令格式,DIMENSION/DECLARE <数组名 1>(<数值表达式 1>
[,<数值表达式 2>]) [,<数组名 2>(<数值表达式 3> [,<数值表达式
4>])]…
说明,?<数值表达式 >为数组下标,对一维数组来说,指的是数组元素的个数;对二维数组来说,指的是数组的最大行号和最大列号。
数组的下标允许使用圆括号或方括号括起来 。
在同一个数组中,不同的数组元素数据类型可以不同 。
数组一旦被定义之后,该数组的每个元素的初值为逻辑假值,可以使用有关的命令给数组元素赋值 。
示例,DIMENSION AB(3),C[2,3]
2,数组的赋值数组元素的 赋值 与普通内存变量一样,可以通过 STORE命令或
,=”来实现 。
示例,给二维数组 X和一维数组 Y进行赋值 。
DIMENSION X(3,4),Y(3)
STORE 5 TO X
Y(1)=325
Y(2)=“ABC”
Y(3)=.T.
3,数组的重定义
( 1)数组的 重定义,使用 DECLARE或 DIMENSION命令对已定义好的数组的尺寸和维数进行改变,即将一维数组变为二维数组或将二维数组变为一维数组,并且可以改变数组元素的个数,同时将原数组的数据自动复制到重定义的同名数组 (新数组 )
中。
3,数组的重定义
( 2) 数据的 复制原则,把原数组和新数组都看作是一维的;
将原数组中的数据从序号 1开始顺序地复制到新数组对应的数组元素中去;若新数组的元素个数多于原数组的元素个数,则新增加的数组元素取值为,F.,反之,只取原数组中的前若干个值 。
( 3) 数组下标的排列规则,数组从下标 1开始排列,二维数组的元素排列是先按行排,后按列排 。
示例,己定义了数组 A(6)与数组 B(2,3),它们对应的下标排列如下:
A(6),A(1),A(2),A(3),A(4),A(5),A(6)
B(2,3),B(1,1),B(1,2),B(1,3),B(2,1),B(2,2),B(2,3)
4,数组的释放数组的释放,将数组从内存中删除,释放其所占的内存空间,就是数组的释放 。
命令格式,
格式 1,CLEAR ALL
功能,关闭所有文件,同时清除所有的内存变量,数组等,但不清除系统内存变量 。
格式 2,CLEAR MEMORY
功能,清除所有内存中的变量和数组,但不清除系统内存变量 。
格式 3,RELEASE <内存变量名表或数组名表 >
或 RELEASE ALL [LIKE <通配符 >/EXCEPT <通配符 >]
功能,清除指定的内存变量或数组,但不清除系统内存变量 。
2.2.4 字段、记录、数据表
( 1) 数据表 是一系列相关数据的集合,由多条记录构成 。
( 2) 字段 是数据表中存储,处理数据的基本元素 。
( 3) 记录 是数据表中一组字段的集合,同一个数据表中所有记录拥有相同的字段名,且同名字段在每个记录中的数据类型,数据长度都是相同的 。
2.2.5 对象、类和属性
( 1) 对象 (Object)是对一事物属性及行为特征的描述,它将某一数据和使用该数据的一组基本操作或过程封装在一起,从而构成一个统一体 。
( 2) 类 (Class)是一组对象的数据和行为特征的抽象描述,是具有共同属性,共同操作性质的对象的集合 。
( 3) 属性 (Attribute)是用来描述对象特征的参数 。
2.3 运算符及表达式
2.3.1 数值运算符及数值表达式
2.3.2 字符串运算符及字符表达式
2.3.3 日期运算符及日期表达式
2.3.4 关系运算符及关系表达式
2.3.5 逻辑运算符及逻辑表达式
2.3.6 类与对象运算符退出
2.3.7 名称表达式
( 1) 数值运算符,圆括号()、乘方( **或 ^)、乘( *)、
除( /)、模运算或取余( %)、加( +)、减( -)
( 2) 数值表达式,由数值运算符将数值型常量、变量、函数等连接起来的式子,其结果为数值型。
( 3)运算符的 优先顺序,括号、乘方、乘除与取模、加减示例,5+7,70/(5+2),7*8**2
2.3.1数值运算符及数值表达式
( 1) 运算符,对相同类型数据进行运算操作的符号。
( 2) 表达式,用运算符将常量、变量、函数等数据连接起来的式子。
( 1) 字符串运算符,完全连接运算符( +)、不完全连接运算符
( -)、字符串包含运算符( $)和精确比较运算符 (= =)。
说明,完全连接运算符,两个字符串的简单连接;
不完全连接运算符,当第一个字符串的尾部有空格时,将第一个字符串尾部的空格移到第二个字符串的尾部,然后,再将两个字符串连接起来。
包含运算符,检测左边的字符串是否 被包含 在右边的字符串中
。如果包含,返回逻辑真值 (.T.),否则返回逻辑假值 (.F.)。
精确比较运算符,只有当两边的字符串完全相等时,才返回逻辑真值 (.T.)。
( 2) 字符表达式,由字符串运算符将字符型常量、变量、函数等连接起来的式子。
示例,,abc,+” bcd,、” abc,-” bcd,,,book”$”bookstore”、
,the”$“this”,,that”= =”that”、” that,= =”that”
2.3.2字符串运算符及字符表达式
( 1) 日期型运算符,加法 (+)、减法 (-)
( 2) 日期表达式,由日期运算符将日期型常量、变量、函数等数据连接起来的式子,其返回结果为日期型或者数值型数据

( 3)日期表达式的几种 形式,
<日期型数据 >+<数值型数据 >
<数值型数据 >+<日期型数据 >
<日期型数据 >-<数值型数据 >
<日期型数据 >-<日期型数据 >
示例,{01/01/1996}+20
{05/30/1998}-{05/20/1998}
{10/28/1995}-20
2.3.3 日期运算符及日期表达式
( 1) 关系运算符,小于 (<),大于 (>),等于 (=),不等于 (<>,#或 !=),小于等于 (<=),大于等于 (>=)。
( 2) 关系表达式,由关系运算符,数值表达式,字符表达式或日期表达式组合而成的式子,返回结果为逻辑值 。
( 3) 关系运算符的两边,可以是字符表达式,数值表达式或者日期表达式,但两边的数据类型必须一致才能进行比较 。
示例,,A”>“B”,,A”<=“B”
“A”=“B”,,A”<>“B”,5+6 >8
2.3.4 关系运算符及关系表达式
( 1) 逻辑运算符,逻辑非(,NOT.)、逻辑与(,AND.)、逻辑或(,OR.)
( 2) 逻辑表达式,由逻辑运算符、逻辑型常量、逻辑型内存变量、逻辑型数组、返回逻辑型数据的函数和关系表达式组成,结果为逻辑型常量。
( 3) 运算规则,进行 逻辑与 运算时,当参加运算的双方都为真值时,运算结果为真值,否则为假值;进行 逻辑或 运算时,
当参加运算的双方都为假值时,运算结果为假值,否则为真值;进行 逻辑非 运算时,运算结果为原来的相反值。
示例,8>3.AND.8<10
“A”>“C”.OR.“A”<“C”
.NOT.5<6
2.3.5 逻辑运算符及逻辑表达式
( 1) 名称表达式,指能代替字符型变量或数组元素的值的一个引用 。
( 2) 定义一个名称时,只能以字母,汉字或下划线开头,
名称中只能使用字母,汉字,数字和下划线字符 。
示例,运用名称表达式打开一个数据表文件 。
STORE,C:\VFP\学生成绩,TO AA
USE (AA)
2.3.7 名称表达式
2.3.6 类与对象运算符
( 1) 点操作符 (,),主要用于确定对象与类的关系,以及属性
,事件和方法与其对象的从属关系 。
( 2) 作用域操作符 (,:),用于在子类中调用父类的方法 。
2.4 函数
2.4.1 字符处理函数 2.4.2 数值处理函数
2.4.3 日期和时间处理函数 2.4.4 数据转换函数
2.4.5 与数据表有关的函数 2.4.6 显示位置函数
2.4.7 文件管理函数
2.4.9 系统函数 SYS()
2.4.8 数组函数退出格式,? <表达式表 >
<表达式表 >
两条命令
2.4.1 字符处理函数
1,宏代换函数 &
格式,&<字符型内存变量 >[.<字符表达式 >]
示例,aa=“bb”
bb=,北京,
aa,bb,&aa
“&bb.是中国的首都,
n=“567.83”
356.08+&n
2.计算字符串长度函数 LEN()
格式,LEN(<字符表达式 >)
示例,?LEN(“ABCDF”)
LEN(“AB C D F”)
X=“首都经贸大学,
LEN(X)
3.生成空格函数 SPACE()
格式,SPACE(<数值表达式 >)
示例,?“北京” +SPACE(3)+“首都”
4.取子字符串函数 SUBSTR()
格式,SUBSTR(<字符表达式 >,<数值表达式 1>[,<数值表达式
2>])
示例,?SUBSTR(“城市经济”,5,4)
5.字符串转换成小写字母函数 LOWER()
格式,LOWER(<字符表达式 >)
示例,?LOWER(“ABDF”)
6,字符串转换成大写字母函数 UPPER()
格式,UPPER(<字符表达式 >)
示例,?UPPER(“abde”)
7,删除字符串尾部空格函数 TRIM()
格式,TRIM(<字符表达式 >)
示例,A=“I am a teacher.,
TRIM(A)
8.删除字符串左边空格函数 LTRIM()
格式,LTRIM(<字符表达式 >)
示例,A=,I am a teacher.,
LTRIM(A)
9.删除字符串右边空格函数 TRIM()
格式,RTRIM(<字符表达式 >)
10.删除字符串最左边和最右边的所有空格函数格式,ALLTRIM(<字符表达式 >)
示例,A=,I am a teacher.,
ALLTRIM(A)
11.取字符串左边部分字符函数 LEFT()
格式,LEFT(<字符表达式 >,<数值表达式 >)
示例,?LEFT(“there,3”)
12.取字符串右边部分字符函数 RIGHT()
格式,RIGHT(<字符表达式 >,<数值表达式 >)
示例,?RIGHT(“what”,2)
13.子字符串位置测试函数 AT()
格式,AT(<子字符串 >,<主字符串 >[,<数字 >])
示例,?AT(“IS”,“THIS IS A BOOK”)
AT(“IS”,“THIS IS ABOOK”,2)
AT(“A”,“THIS IS ABOOK”)
AT(“D”,“BOOK”)
14.测试表达式类型函数 TYPE()
格式,TYPE(<表达式 >)
说明,函数返回值为字符型,各字符含义如下:
字符值 数据类型 字符值 数据类型
C 字符型 M 备注型
N 数值型 O 对象型
D 日期型 G 通用型
T 日期时间型 Y 货币型
L 逻辑型 U 未定义型示例,A=567
TYPE(“A”)
2.4.2 数值处理函数
1.取整函数 INT()
格式,INT (<数值表达式 >)
示例,?INT(5.96)
INT(-8.66)
INT(10.98-2.43)
2,四舍五入函数 ROUND()
格式,ROUND(<数值表达式 1>,<数值表达式 2>)
示例,?ROUND(345.6799,3)
ROUND(345.6799,0)
ROUND(345.6799,-2)
3.取绝对值函数 ABS()
格式,ABS(<数值表达式 >)
示例,?ABS(-20)
4,最大值函数 MAX()
格式,MAX(<数值表达式 1>,<数值表达式 2>)
示例,?MAX(10,20)
MAX(-10,-20)
5,最小值函数 MIN()
格式,MIN(<数值表达式 1>,<数值表达式 2>)
示例,?MIN(10,20)
MIN(-10,-20)
6.求平方根函数 SQRT()
格式,SQRT(<数值表达式 >)
示例,?SQRT(16)
7.求自然对数函数 LOG()
格式,LOG(<数值表达式 >)
示例,?LOG(15.36)
8.幂函数 EXP()
格式,EXP(<数值表达式 >)
示例,?EXP(3)
9.求余数函数 MOD()
格式,MOD(<数值表达式 1>,<数值表达式 2>)
说明,函数返回值的符号与 <数值表达式 2>的符号相同。
示例,?MOD(10,3)
MOD(10,-3)
MOD(15,-4)
MOD(-15,-4)
10,IIF函数格式,IIF(<逻辑表达式 >,<表达式 1>,<表达式 2>)
示例,X=80
Y=60
IIF(X>Y,50+X,100+Y)
2.4.3 日期和时间处理函数
1.系统当前日期函数 DATE()
格式,DATE()
2.系统当前时间函数 TIME()
格式,TIME([<数值表达式 >])
3.日函数 DAY()
格式,DAY(<日期型表达式 >/<日期时间型表达式 >)
4.月份函数 MONTH()
格式,MONTH(<日期型表达式 >/<日期时间型表达式 >)
5.年份函数 YEAR()
格式,YEAR(<日期型表达式 >/<日期时间型表达式 >)
2.4.4 数据转换函数
1.字符转换成 ASCII码函数 ASC()
格式,ASC(<字符表达式 >)
功能,给出 <字符表达式 >中最左边字符的 ASCII码的十进制数。
示例,?ASC(“ABCD”)
2,ASCII码值转换成字符函数 CHR()
格式,CHR(<数值表达式 >)
功能,将 <数值表达式 >的值作为 ASCII码的十进制数,给出对应的字符。
示例,?CHR(65)
3.数值型转换为字符型函数 STR()
格式,STR(<数值表达式 1>[,<数值表达式 2>[,<数值表达式 3>]])
说明,
1) <数值型表达式 2>给出转换后的字符串长度,该长度包括小数点,负号 。 如果缺省 <数值表达式 2>和 <数值表达式 3>,其输出结果将取固定长度为 10位,且只取其整数部分;
2) <数值表达式 3>给出小数位数,决定转换后小数点右面的小数位数,默认位数为 0位;
3) 如果 <数值表达式 2>的值大于 <数值表达式 1>给出值的数字位数时,在返回的字符串左边添加空格;
4) 如果 <数值表达式 2>的值小于小数点左边的数字位数,将返回一串星号,表示数值溢出 。
示例,?str(95643.5136)?str(95643.5136,8,2)
str(95643.5136,8)?str(95643.5136,3)
4.字符型转换成数值型函数 VAL()
格式,VAL(<字符表达式 >)
说明,
1) <字符表达式 >的值必须是 数字形式的字符串,它只能含有数字、正负号和小数点 ;
2)转换时,如果遇到非上述字符则停止。如果字符型表达式的第一个字符即非上述字符,则转换停止 ;
3)转换后的小数位数,隐含为 2位,可用 SET DECIMAL
TO N去改变。
示例,?VAL(“8769.3421”)
VAL(“8769AB21”)
VAL(“AB8769.3421”)
5.字符型转换成日期型函数 CTOD()
格式,CTOD(<字符表达式 >)
说明,<字符表达式 >必须是一个有效的日期格式。
示例,?CTOD(“09/23/01”)
6.日期型转换成字符型函数 DTOC()
格式,DTOC(<日期型表达式 >/<日期时间型表达式 >[,1])
说明,如果有 [,1]选项,则按照年月日的格式输出。
示例,X=CTOD(“09/10/99”)
DTOC(X)
DTOC(X,1)
2.4.5 与数据表有关的函数
1,表文件开始测试函数格式,BOF([<工作区号或别名 >])
说明,检测当前或指定工作区中表的记录指针是否位于第一条记录之前,如果是,返回真值 (.T.),否则返回假值 (.F.)。
示例,USE 学生表?BOF()
SKIP -1?BOF()
2,表文件结束测试函数格式,EOF([<工作区号或别名 >])
说明,检测当前或指定工作区中表的记录指针是否位于最后一条记录之后,如果是,返回真值 (.T.),否则返回假值 (.F.)。
2.表文件结束测试函数示例,USE 学生表?EOF()
GO BOTTOM?EOF()
SKIP 1?EOF()
3.记录号测试函数格式,RECNO([<工作区号或别名 >])
功能,给出当前或指定工作区中当前记录的记录号 。 函数返回值为数值型 。
示例,USE 学生表?RECNO()
GOTO 4?RECNO()
4.测试查询结果函数格式,FOUND([<工作区号或别名 >])
功能,用于测试查询表文件或索引文件的记录是否找到,如果找到,结果为逻辑真值,否则为逻辑假值 。
5.测试文件存在函数格式,FILE(<“文件名,>)
功能,测试指定的文件是否存在,如果存在,返回逻辑真值,否则返回逻辑假值 。
说明,文件名应包括扩展名,文件名两端要用引号括起来,如果无引号,系统则默认为是变量名 。
示例,?FILE(“学生成绩,DBF”)
6.记录删除测试函数格式,DELETED([<工作区号或别名 >])
功能,如果当前或指定工作区中的当前记录被做过删除标记,则返回逻辑真值,否则返回逻辑假值 。
9.检测工作区号函数格式,SELECT([0/1/别名 ])
功能,返回当前工作区号或者返回未使用的工作区的最大编号 。
说明,参数 0指定 SELECT返回当前工作区号;参数 1指定 SELECT返回未使用工作区的最大编号;参数,别名,指定 SELECT返回表文件别名所在的工作区编号 。 函数返回值为数值型 。
10.测试表文件是否打开函数格式,USED([<工作区或别名 >])
功能,判断指定的工作区中是否有表文件打开 。
说明,函数返回值为逻辑型 。 如果在指定的工作区中有表文件打开,返回真值,否则返回假值 。
7.检测表文件名函数格式,DBF([<工作区号或别名 >])
功能,返回当前或指定工作区中打开的数据表文件名,返回值为字符型 。
说明,如果没有打开的表文件,则返回空串 。
示例,USE 学生表
DBF()
8.检测表文件别名函数格式,ALIAS([<工作区号或别名 >])
功能,返回当前或指定工作区中打开的数据表文件的别名 。 返回值为字符型 。
说明,如果没有打开的表文件,则返回空串 。
2.4.6 显示位置函数 ***
1.光标列坐标函数 COL()
2.光标行坐标函数 ROW()
格式,COL()
功能,给出光标当前列的位置,函数返回值为数值型。
格式,ROW()
功能,给出光标当前行的位置,函数返回值为数值型。
2.4.7 文件管理函数
1,返回当前目录函数格式,CURDIR([字符表达式 ])
功能,返回当前目录 。
说明,
1) 函数返回值为字符型;
2) <字符表达式 >指定驱动器,函数将返回该驱动器的当前目录或文件夹;
3) 如果省略 <字符表达式 >,则返回缺省驱动器的当前目录;
4) 如果 <字符表达式 >指定的驱动器不存在,返回空串 。
示例,?CURDIR()
2,测试指定目录函数格式,DIRECTORY(<目录名 >)
功能,如果在磁盘上发现了指定目录,返回真值 (.T.)。
说明,
1) <目录名 >给出指定要定位的目录名;
2) 如果在指定的目录中没有给出绝对路径,则相对于 Visual
FoxPro缺省目录查找该目录 。
3,磁盘可用空间测试函数格式,DISKSPACE([<磁盘驱动器名 >])
功能,返回缺省驱动器或指定的磁盘驱动器的可用字节数说明,该函数返回值为数值型 。 在使用时,〈 磁盘驱动器名 〉 要加上字符串定界符 。
4,测试文件大小函数格式,FSIZE(<字段名 >[,<工作区号 >/<表别名 >]/<文件名 >)
功能,以字节为单位返回指定字段或文件的大小 。
说明,
1) 该函数 返回值 为数值型;
2 ) 函数 FSIZE ( ) 返回字段大小还是文件大小,是由 SET
COMPATIBLE的当前设置决定的 。 如果 SET COMPATIBLE设置为
OFF 或 缺 省,FSIZE ( ) 返 回 某 字 段 的 大 小 ; 如 果 SET
COMPATIBLE设置为 ON,FSIZE( ) 返回文件的大小;
3) 如果给出参数 <字段名 >,则返回指定字段的大小,如果其后有
<工作区号 >/<表别名 >,则返回指定表文件中字段的大小,否则返回当前打开的数据表文件中字段的大小;
4) 如果给出参数 <文件名 >,则返回该文件的大小 。
示例,SET COMPATIBLE OFF CLOSE ALL
USE 学生表?FSIZE(“姓名,)
FSIZE(“性别,)
5,选择目录函数格式,GETDIR([<路径 >[,<文本 >]])
功能,显示,选择目录,对话框,可以从中选择目录;或者显示,选择文件夹,对话框,可以从中选择文件夹 。
说明,
1) 该函数 返回值 为字符型;
2) <路径 >指定在对话框中初始显示的目录或者对话框 。 如果没有指定 <路径 >,对话框打开时显示 Visual FoxPro的缺省目录或者缺省对话框;
3) <文本 >指定对话框中目录列表或者文件夹列表的标题文本

示例,?getdir("c:\program files","请在下面选择,")
6,打开文件函数格式,GETFILE([<文件扩展名 >][,<字符串 >][,<打开按钮标题
>][,<按钮类型 >])
功能,显示,打开文件,对话框,返回用户选择的文件名 。
说明,
1) 该函数 返回值 为字符型;
2) <文件扩展名 >指定没有选中菜单项,所有文件,时在滚动列表中显示的文件扩展名 。 如果作为原意字符传递数据,要将其加上引号,不要在扩展名前加上符号 (.);
3) <字符串 >指定,打开,对话框中目录或文件夹列表的文本;
4) <打开按钮标题 >为 OK按钮指定标题;
5) <按钮类型 >指定在,打开,对话框中显示的按钮数目和类型 。 可以分别取值为 0,1和 2。
7,另存为函数格式,PUTFILE([<字符串 >][,<文件名 >][,<文件扩展名 >])
功能,激活,另存为,对话框,返回指定的文件名 。
说明,
1) 该函数 返回值 为字符型;
2) <字符串 >指定显示在,另存为,对话框上的定制文本;
3) <文件名 >指定显示在文本框中缺省文件名;
4) <文件扩展名 >指定要定位的文件的扩展名 。 文件扩展名可以包括多个扩展名,各扩展名之间用分号分隔 。
2.4.8 数组函数
1,数组拷贝函数格式,ACOPY(<源数组名 >,<目标数组名 >[,<源数组起始元素序号 >[,<复制元素个数 >[,<目标数组的起始元素序号 >]]])
功能,将源数组中指定的元素复制到目标数组中 。 函数返回值是一个整数,说明已经复制了的元素个数 。
说明,
1) 此函数既适用于一维数组,也适用于二维数组;
2) 如果没有选择项,整个数组复制,<源数组起始元素序号 >
和 <目标数组的起始元素序号 >的缺省值都为 1。
2,数组内容排序函数格式,ASORT(<数组名 >[,<数值表达式 1>[,<数值表达式 2>[,<排序方式 >]]])
说明,1) <排序方式 >为数值表达式,如果等于 0或缺省,按升序排序;如果大于 0,按降序排序;
2) 函数 返回值 为数值型,排序成功返回值为 1,否则返回值为 -1;
3) 对于 一维数组,<数值表达式 1>指出参加排序的起始元素序号,
缺省值为 1; <数值表达式 2>指出参加排序的元素个数,缺省表示从指定的起始元素到最后一个元素均参加排序;
4) 对于 二维数组,排序以行为单位,允许对所有行或某些行进行排序 。 <数值表达式 1>指出参加排序的起始元素序号,该序号所在的行是参加排序的起始行,按照它所在列的数值进行排序; <数值表达式 2>指出参加排序的行数,缺省表示从指定的起始行到最后一行均参加排序;
5) 对一维数组进行排序时,所有的数组元素必须具有 相同类型 的数据;对于二维数组,进行排序的那一列必须具有相同的数据类型

3,数组元素删除函数格式,ADEL(<数组名 >,<数组元素编号 >[,2])
功能,从一维数组中删除一个元素,或者从二维数组中删除一行或者一列 。
说明,
1) 该函数 返回值 为数值型;
2) <数组名 >指定要删除元素的数组;
3) <数组元素编号 >指定要删除的元素,行或者列的编号 。 要从数组中删除某一列,必须在函数中包含可选参数 2;
4) 删除数组的元素或者删除数组的某一行或某一列 不改变数组的大小,位于被删除元素,行,列之后的元素,行,列前移填补到已删除的位置,数组最后的元素或者最后行,最后列被置为假
(.F.);
5) 如果 删除成功,该函数返回值为 1。
4,数组插入元素函数格式,AINS(<数组名 >,<数组元素编号 >[,2])
功能,在一维数组中插入一个元素,或者在二维数组中插入一行元素或者插入一列元素 。
说明,1) 该函数 返回值 为数值型;
2) <数组名 >指定要插入元素的数组;
3) <数组元素编号 >指定插入新元素,新行或者新列的位置,在一维数组中插入的新元素位置在数组元素编号指定的元素之前,在二维数组中插入的新行位置在数组元素编号指定的行之前;
4) 参数 2指定在二维数组中插入一列,其位置在数组元素编号指定的列之前;
5) 在数组中插入元素,行或者列 不改变数组的大小,数组后续的元素,行或者列被逐步向后移,最后的元素,行或者列被丢弃,
新插入的元素,行或者列的值被初始化成假 (.F.);
6) 如果 插入成功,该函数返回值为 1。
5,数组长度测试函数格式,ALEN(<数组名 >[,<测试类别 >])
功能,返回数组中元素的个数,行数或者列数 。
说明,
1) 该函数 返回值 为数值型;
2) <数组名 >指定要测试长度的数组,如果只包含数组名参数,
该函数返回数组中元素的个数;
3) <测试类别 >指定该函数返回的是元素个数还是行数,列数,
其可用值如下:
0 返回数组中元素的个数,如果省略 <测试类别 >参数等同于指定其为 0;
1 返回数组中的行数;
2 返回数组中的列数,如果是一维数组,返回值为 0。
6,数组元素查找函数格式,ASCAN(<数组名 >,<表达式 >[,<开始元素编号 >[,<元素查找个数 >]])
功能,在数组中查找包含与指定表达式类型,数据都相同的元素

说明,
1) 该函数 返回值 为数值型;
2) <数组名 >指定要查找的数组名;
3) <表达式 >指定查找用的基本表达式;
4) <开始元素编号 >指定查找开始的元素号,指定的元素也参加查找,如果省略该参数,则查找整个数组;
5) <元素查找个数 >指定参加查找的元素个数,如果省略 <开始元素编号 >和 <元素查找个数 >,则查找自第一个元素开始,一直到最后一个元素;
6) 如果 查找到匹配的元素,函数返回匹配元素的元素号,如果 没有查找到匹配的元素,函数返回值为 0。
2.4.9 系统函数格式,SYS(<数值表达式 >)
说明,
1) 系统函数 SYS()中随着 数值表达式 值的不同,系统将完成不同的功能 。
2) 函数 返回结果 为字符型 。
示例,SYS(1)返回机器名和网络机器号
SYS(5)返回当前缺省的驱动器名
SYS(17)返回当前正在使用的中央处理器的类型
SYS(101)返回当前 SET DEVICE的设置
SYS(103)返回当前 SET TALK的设置
SYS(2018)为最近的错误返回出错的原因信息
2.5 命令
2.5.1命令组成和书写规则
2.5.2常用的环境设置命令退出
2.5.1命令组成和书写规则命令格式:命令动词 +修饰子句
1,命令格式
2.遵循的规则
1) 必须以命令动词开头,其后子句的顺序可以任意 。
2) 命令动词,修饰和限制子句之间要用空格分开 。
3) 命令动词可以缩写为前四个字符,并且命令动词中的英文字母不区分大小写 。
4) 变量名,字段名和文件名应避免使用保留字,以免产生错误 。
5) 在本书所给出的命令格式中,[]表示可选项,<>表示必选项,/表示在其左右参量中任选一项 。
2.5.2常用的环境设置命令
1.SET DATE命令格式,SET DATE TO AMERICAN / ANSI / BRITISH / USA /
MDY/DMY/YMD
说明:各种设置的结果如下:
设置 格式
AMERICAN MM/DD/YY
ANSI YY.MM.DD
BRITISH DD/MM/YY
USA MM-DD-YY
MDY MM/DD/YY
DMY DD/MM/YY
YMD YY/MM/DD
2,SET CENTURY命令格式,SET CENTURY ON/OFF
功能,确定是否显示日期表达式中的世纪部分 。
说明,ON表示在日期格式中指定年度为 4位; OFF表示指定日期格式中年度为 2位 。
3,SET HOURS命令格式,SET HOURS TO [12/24]
说明,TIME()函数不受此命令的影响。
4,SET SECONDS命令格式,SET SECONDS ON/OFF
功能,决定显示日期时间值时,是否显示秒 。
说明,ON( 默认 ) 指定在日期时间值中显示秒,OFF
指定不显示秒 。
5,SET DEVICE命令格式,SET DEVICE TO SCREEN/TO PRINTER/TO FILE <文件名
>
功能,把 @… SAY的输出发送到屏幕,打印机或文件 。
说明,TO SCREEN把输出发送到 Visual FoxPro的主窗口或活动的自定义窗口; TO PRINTER将输出发送到打印机; TO FILE <文件名 > 将输出发送到文件 。
6,SET DEFAULT命令格式,SET DEFAULT TO <盘符 >
功能,指定缺省的驱动器和目录 。
7,SET TALK命令格式,SET TALK ON/OFF
功能,确定是否显示命令的执行结果 。
说明,ON允许将命令的结果发送到 Visual FoxPro的主窗口; OFF
禁止将结果输出到屏幕 。
8,SET DECIMALS命令格式,SET DECIMALS TO [<数值表达式 >]
功能,指定数值型表达式中显示的十进制小数位数 。
说明,命令中的 <数值表达式 >指定显示的小数位数,默认值为两位小数 。
9,SET SAFETY命令格式,SET SAFETY ON/OFF
功能,在改写文件时,是否显示对话框确认改写有效 。
说明,ON( 默认 ) 指定在改写已存在的文件之前显示对话框,以选择是否改写; OFF指定已存在的文件改写之前不显示对话框 。
10,SET DELETED命令格式,SET DELETED ON/OFF
功能,在使用某些命令时,指定是否对加了删除标记的记录进行操作

说明,ON指定忽略做了删除标记的记录; OFF( 默认 ) 则不忽略做了删除标记的记录 。