1、02002年9月8日1.常量常量 常量就是在工作过程中其值不发生变常量就是在工作过程中其值不发生变化的量。常量有四种类型:化的量。常量有四种类型:(1)数值型常量数值型常量(Numeric,简称,简称N型型)数值型常量又称常数,是由阿拉伯数数值型常量又称常数,是由阿拉伯数字、正负号和小数点组成的可以进行字、正负号和小数点组成的可以进行算术运算的数。可用科学计数法表示。算术运算的数。可用科学计数法表示。3.1 常量、变量、数据类型常量、变量、数据类型12002年9月8日(2)字符型常量字符型常量(Character,简称,简称C型型)字符型常量又称字符串,是由字符型常量又称字符串,是由ASCII
2、字符和汉字组成的一串字符。字符和汉字组成的一串字符。VFP规定字符型常量最多包含规定字符型常量最多包含254个个字符字符(一个汉字占一个汉字占2个英文字符位置个英文字符位置)。字符串须用定界符。定界符有三种:字符串须用定界符。定界符有三种:单引号单引号()、双引号、双引号(“”)和方括号和方括号(、)。当字符串本身含有其中一种符号时,当字符串本身含有其中一种符号时,选用另一种符号作为定界符。选用另一种符号作为定界符。比如:比如:Fox、“123”、程序设计程序设计 3.1 常量、变量、数据类型常量、变量、数据类型22002年9月8日(3)日期与日期时间型日期与日期时间型(Date,简称,简称D
3、型型)日期型常量必须用花括号括起来,例如日期型常量必须用花括号括起来,例如06/30/00,06/30/99,空白的日期,空白的日期可表示为可表示为或或/。系统默认为美国格式系统默认为美国格式06/30/99 代表代表1999年年6月月30日。日。可用可用SET DATE 命令设定。命令设定。ANSI yy.mm.dd BRITISH dd/mm/yyMDY mm/dd/yy DMY dd/mm/yyYMD yy/mm/dd3.1 常量、变量、数据类型常量、变量、数据类型32002年9月8日可用命令可用命令 SET CENTURY ON|OFF 设置日期中是否带世纪,系统默认为设置日期中是否带
4、世纪,系统默认为OFF。执行命令执行命令 SET CENTURY ON则则 09/30/2000正确,代表正确,代表2000年年6月月30日。日。日期时间型常量的写法为日期时间型常量的写法为 9/15/99 8:45,空白的日期时间可表示为空白的日期时间可表示为/:3.1 常量、变量、数据类型常量、变量、数据类型42002年9月8日 严格的日期格式严格的日期格式:yyyy-mm-dd,hh:mm:ssa|pv符号符号表明该日期是严格格式表明该日期是严格格式.其中的其中的-号可用号可用/代替代替vVFP60默认使用严格的日期格式,可用默认使用严格的日期格式,可用 SET STRICTDATE T
5、O 0|1 命令设置:命令设置:1:严格日期格式:严格日期格式0:普通日期格式:普通日期格式3.1 常量、变量、数据类型常量、变量、数据类型52002年9月8日(4)逻辑型常量逻辑型常量(Logical,简称,简称L型型)逻辑型常量的具体值只可能有两种:逻辑型常量的具体值只可能有两种:“真真”和和“假假”VFP规定:规定:逻辑逻辑“真真”用用.T.或或.Y.、.t.、.y.表示,但系统一表示,但系统一律转换为律转换为.T.存储。存储。逻辑逻辑“假假”用用.F.或或.N.、.f.、.n.表示,但系统一表示,但系统一律转换为律转换为.F.存储。存储。3.1 常量、变量、数据类型常量、变量、数据类型
6、62002年9月8日(5)货币型常量货币型常量 货币型常量以货币型常量以$符号开头,并四符号开头,并四舍五入保留舍五入保留4位小数。位小数。例如货币型常量例如货币型常量$100.12345,代表:代表:100.12353.1 常量、变量、数据类型常量、变量、数据类型72002年9月8日 2.变量变量在命令操作和程序运行过程中其值允许变化的在命令操作和程序运行过程中其值允许变化的量称变量。量称变量。变量包括变量包括3种:种:内存变量内存变量简单变量简单变量数组数组字段变量字段变量系统变量系统变量对象变量对象变量 3.1 常量、变量、数据类型常量、变量、数据类型82002年9月8日1)1)内存变量
7、内存变量 内存变量的三个属性:变量名、类型和值。内存变量的三个属性:变量名、类型和值。变量名变量名以字母以字母(也可汉字也可汉字)或下划线开头,由字母、或下划线开头,由字母、数字、下划线组成,至多数字、下划线组成,至多128128个字符的字符串。个字符的字符串。不可与系统保留字同名。不可与系统保留字同名。变量的类型变量的类型内存变量没有固定的类型,用户把什么样的内存变量没有固定的类型,用户把什么样的常量数据存入其中,它就具有什么类型。所常量数据存入其中,它就具有什么类型。所以,内存变量也有数值以,内存变量也有数值(N)N)型、字符型、字符(C)(C)型、型、逻辑逻辑(L)(L)型、日期型、日期
8、(D)(D)型等类型。型等类型。3.1 常量、变量、数据类型常量、变量、数据类型92002年9月8日赋值赋值把数据存入内存变量的操作叫把数据存入内存变量的操作叫“赋值赋值”,用赋值命,用赋值命令实现。该命令有两种格式:令实现。该命令有两种格式:格式格式1:STORE TO 格式格式2:=v 格式格式1可一次给多个变量赋值,变量用逗号分隔可一次给多个变量赋值,变量用逗号分隔v 格式格式2一次只能给一个变量赋值一次只能给一个变量赋值v 实例:实例:s=VFPSTORE 2*4 TO n1,n2,n3date=09/30/00vl=.T.3.1 常量、变量、数据类型常量、变量、数据类型102002年
9、9月8日输出变量输出变量格式格式1:?格式格式2:?v 格式格式1换行输出换行输出值值v 格式格式2同一行输出同一行输出值值v 实例:实例:?s?n1,n2,n3?date?vl3.1 常量、变量、数据类型常量、变量、数据类型112002年9月8日2)数组数组 数组是按一定顺序排列的一组内存变量,数组中的数组是按一定顺序排列的一组内存变量,数组中的各个变量称为数组元素。数组必须先定义后使用。各个变量称为数组元素。数组必须先定义后使用。数组的定义数组的定义v 命令格式命令格式:DIMENSION|DECLARE (m1,n1),(m2,n2)v 功能功能:定义一维或二维数组,及其下标的上界。定义
10、一维或二维数组,及其下标的上界。v 说明说明:a.系统规定各下标的下界为系统规定各下标的下界为1。3.1 常量、变量、数据类型常量、变量、数据类型122002年9月8日 b.VFP最多可定义最多可定义65000个数组,每个数个数组,每个数 组最多可包含组最多可包含65000个元素。个元素。c.实例实例 DIMENSION x(3),a(2,3)数组数组x下标的上界为下标的上界为3,该数组有,该数组有3个数个数 组元素组元素:x(l),x(2),x(3)数组数组a具有具有2行行3列列6个元素,分别为个元素,分别为:a(1,1),a(1,2),a(1,3),a(2,1),a(2,2),a(2,3)
11、3.1 常量、变量、数据类型常量、变量、数据类型132002年9月8日 数组的赋值数组的赋值a.数组定义后各数组元素的初值为数组定义后各数组元素的初值为.F.b.数组的元素可取不同类型,且可改变数组的元素可取不同类型,且可改变c.对数组的赋值同对普通变量的赋值对数组的赋值同对普通变量的赋值d.可为单个数组元素赋值可为单个数组元素赋值 x(1)=3 a(1,1)=“fox”a(1,3)=.f.e.只指定数组名为各元素赋相同值只指定数组名为各元素赋相同值 x=1.20f.二维数组可按一维数组来存取二维数组可按一维数组来存取 a(5)=“山大山大”&相当于相当于 a(2,2)=“山大山大”3.1 常
12、量、变量、数据类型常量、变量、数据类型142002年9月8日 3)内存变量的显示内存变量的显示命令格式命令格式:LIST|DISPLAY MEMORY LIKE TO PRINTERPROMPT TO FILE功能功能:显示当前已定义的内存变量名、作用范围、类型显示当前已定义的内存变量名、作用范围、类型和值。和值。说明说明:a.LIKE子句显示与通配符匹配的内存变子句显示与通配符匹配的内存变 量,通配符:量,通配符:?代表单个任意字符代表单个任意字符 *代表一串任意字符。代表一串任意字符。3.1 常量、变量、数据类型常量、变量、数据类型152002年9月8日 b.TO PRINTER 将显示内
13、容输出到打印机将显示内容输出到打印机 c.TO FILE 将显示内容存入文件将显示内容存入文件 实例实例 LIST MEMORY LIKE?n1 Pub N (800000000)n2 Pub N (800000000)n3 Pub N (800000000)3.1 常量、变量、数据类型常量、变量、数据类型162002年9月8日 4)内存变量的清除内存变量的清除命令格式命令格式:RELEASE|ALL LIKE|EXCEPT功能功能:从内存清除指定的内存变量。从内存清除指定的内存变量。例例RELEASE a,bRELEASE ALLRELEASE ALL LIKE a*RELEASE ALL
14、EXCEPT?b*3.1 常量、变量、数据类型常量、变量、数据类型172002年9月8日 用特定的运算符把各种类型数据连接起来,这用特定的运算符把各种类型数据连接起来,这就是表达式。就是表达式。根据表达式的值和运算种类的不同,表达式分根据表达式的值和运算种类的不同,表达式分为五种:为五种:数值型数值型 关系型关系型 字符型字符型 逻辑型逻辑型 日期型日期型3.2 表达式表达式182002年9月8日1)数值型表达式数值型表达式 数值型表达式又称为算术表达式,由数值型表达式又称为算术表达式,由算术运算符把数值型运算量连接而成。运算术运算符把数值型运算量连接而成。运算结果为数值型。算结果为数值型。算
15、术运算符算术运算符(按运算优先级从低到高按运算优先级从低到高):乘方乘方*或或 高高 乘乘 *除除/求余求余%加加 +减减-低低3.2 表达式表达式192002年9月8日l VFP算术表达式与数学中算术式书写规则算术表达式与数学中算术式书写规则的不同。的不同。l用括弧改变运算次序用括弧改变运算次序l 例如:例如:乘号要用乘号要用*,不能用,不能用“”或或“”号号 数学式数学式3ab 3*a*b 数学式数学式xy x/y3.2 表达式表达式202002年9月8日2)字符型表达式字符型表达式 字符型表达式又称字符串连接,由字符连字符型表达式又称字符串连接,由字符连接运算符将字符型运算量连接而成。运
16、算接运算符将字符型运算量连接而成。运算结果仍为字符型。结果仍为字符型。l 直接连接直接连接+l 移空连接移空连接 将前一个字符串尾部的空格移到连接后的将前一个字符串尾部的空格移到连接后的字符串尾部字符串尾部3.2 表达式表达式212002年9月8日l 例如例如 STORE“Data ”TO a b=“Base”?a+b Data Base?a-b DataBase 注意:注意:DataBase尾部有一空格。尾部有一空格。3.2 表达式表达式222002年9月8日3)日期型表达式日期型表达式v两个日期型数据只能作减法运算,结果为两个两个日期型数据只能作减法运算,结果为两个日期相差的天数,为数值型
17、数据。日期相差的天数,为数值型数据。SET STRI TO 0?12/31/99-12/31/98 365v日期型数据可和数值型数据作减法或加法运算,日期型数据可和数值型数据作减法或加法运算,表示增加或减少的天数,结果为日期型数据。表示增加或减少的天数,结果为日期型数据。?06/30/98-6 06/24/983.2 表达式表达式232002年9月8日l两个日期时间型数据只能作减法运算,结果为两两个日期时间型数据只能作减法运算,结果为两个日期相差的秒数,为数值型数据。个日期相差的秒数,为数值型数据。SET STRI TO 1?1998/09/01 12:01-1998/0901 12:00 6
18、0l一个日期时间型数据可和一个数值型数据作减法一个日期时间型数据可和一个数值型数据作减法或加法运算,其中的数值型数据代表增加或减少或加法运算,其中的数值型数据代表增加或减少的秒数,结果为日期时间型数据。的秒数,结果为日期时间型数据。SET STRI TO 0?09/01/1998 12:00 am+60 09/01/1998 12:01:00 pm3.2 表达式表达式242002年9月8日4)关系型表达式关系型表达式v关系运算符,又称比较运算符:关系运算符,又称比较运算符:等于等于 =不等于不等于 或或#或或!=小于小于 小于或等于小于或等于 大于或等于大于或等于=字符串精确相等字符串精确相等
19、 =子字符串包含子字符串包含$:左串是右串子串为真左串是右串子串为真v关系表达式的结果为逻辑关系表达式的结果为逻辑“真真”(.T.),或逻辑或逻辑“假假”(.F.)3.2 表达式表达式252002年9月8日数值的比较数值的比较数值型数据按照数值的大小进行比较。数值型数据按照数值的大小进行比较。例如:例如:a=4 b=5 STORE a=b TO x?a,b,x 4 5 .F.3.2 表达式表达式262002年9月8日字符串的比较字符串的比较v单个英文字母、数字字符和标点符号等的大单个英文字母、数字字符和标点符号等的大小顺序按照其小顺序按照其ASCII码值排列。码值排列。v 汉字字符按其内码顺序
20、确定大小汉字字符按其内码顺序确定大小(常用国标常用国标一级汉字按拼音顺序排列一级汉字按拼音顺序排列)。v字符串比较时从左边第一个字符开始逐个比字符串比较时从左边第一个字符开始逐个比较,最先发现的不一样的字符彼此是什么关较,最先发现的不一样的字符彼此是什么关系,相应的字符串之间就是什么关系。系,相应的字符串之间就是什么关系。3.2 表达式表达式272002年9月8日l说明:说明:当用当用“=”号比较两个字符型数据是否相等时,结果号比较两个字符型数据是否相等时,结果与与SET EXACT 的状态有关:的状态有关:vSET EXACT OFF时,只要右边那个字符串与时,只要右边那个字符串与左边字符串
21、的首部子串相等即可;左边字符串的首部子串相等即可;vSET EXACT ON时,左右两个字符串必须完全时,左右两个字符串必须完全一样才认为相等。一样才认为相等。v用用=号比较两个字符型数据是否相等时,结号比较两个字符型数据是否相等时,结果与果与SET EXACT 的状态无关,左右两个字符串的状态无关,左右两个字符串必须完全一样才认为相等。必须完全一样才认为相等。3.2 表达式表达式282002年9月8日l实例:实例:a=FRANCIS b=FRIEND STORE a=物理物理 .T.T.F.?AB=A,A=AB,AB=A,AB=AB.T.F.F.T.SET EXACT ON?“AB=A,A=
22、AB,AB=A,AB=AB.F.F.F.T.3.2 表达式表达式292002年9月8日日期的比较日期的比较 两个日期型数据比较时按照日期的先后进行比较。两个日期型数据比较时按照日期的先后进行比较。例如:例如:SET STRI to 0 d1=02/16/91 d2=03/25/88?d1d2,d2d1 .T.F.3.2 表达式表达式302002年9月8日5).逻辑型表达式逻辑型表达式由逻辑运算符将关系表达式或逻辑型数据连接而成,由逻辑运算符将关系表达式或逻辑型数据连接而成,其运算结果仍为逻辑值。其运算结果仍为逻辑值。逻辑运算符逻辑运算符逻辑非逻辑非 NOT逻辑与逻辑与 AND 逻辑或逻辑或 O
23、R注:注:FoxBASE 要求运算符两侧加园点:要求运算符两侧加园点:.OR.、.AND.、.NOT.。3.2 表达式表达式312002年9月8日abNOT a NOT ba AND bA OR b.T.T.F.F.T.T.F.T.T.F.F.T.T.F.F.T.F.T.F.F.T.T.F.F.逻辑运算符的运算规则逻辑运算符的运算规则3.2 表达式表达式322002年9月8日l 说明说明一般而言,逻辑表达式描述一个复合条件一般而言,逻辑表达式描述一个复合条件a.“年龄在年龄在25岁至岁至35岁之间岁之间”,不能写成:,不能写成:25=年龄年龄=25 AND 年龄年龄=35b.“年龄为年龄为19
24、、20岁的男同学岁的男同学”应表示为:应表示为:(年龄年龄=19 OR 年龄年龄=20)AND 性别性别=男男3.2 表达式表达式332002年9月8日6)表达式小结表达式小结l一个复杂的表达式进行运算处理时,首先分别计算一个复杂的表达式进行运算处理时,首先分别计算各个算术表达式、字符表达式之值,然后进行关系各个算术表达式、字符表达式之值,然后进行关系(比较比较)运算,最后进行逻辑运算,从而得出一个具运算,最后进行逻辑运算,从而得出一个具体的运算结果。体的运算结果。l可以用圆括弧改变运算顺序。圆括弧还可以嵌套,可以用圆括弧改变运算顺序。圆括弧还可以嵌套,最内层括弧的运算最优先。书写表达式时一定
25、要注最内层括弧的运算最优先。书写表达式时一定要注意圆括弧必须成对使用,而且建议凡是容易混淆的意圆括弧必须成对使用,而且建议凡是容易混淆的地方尽量采用圆括弧。地方尽量采用圆括弧。3.2 表达式表达式342002年9月8日3.3 函数函数 函数是函数是VFP的又一种运算成份,其格式为:的又一种运算成份,其格式为:()每一个函数有一个函数值。函数有数值、每一个函数有一个函数值。函数有数值、字符、日期、逻辑四种类型。字符、日期、逻辑四种类型。函数象其它常量、变量一样,作为表达式函数象其它常量、变量一样,作为表达式一个数据元素参与进一步的处理运算。一个数据元素参与进一步的处理运算。函数的自变量个数、类型
26、和书写顺序都有函数的自变量个数、类型和书写顺序都有规定,使用时必须按规定书写规定,使用时必须按规定书写352002年9月8日(一一)数学运算函数数学运算函数自变量和得到的函数值均为数值型。自变量和得到的函数值均为数值型。(1)ABS(X):取绝对值函数:取绝对值函数(2)INT(X):取整函数:取整函数函数值为自变量函数值为自变量X的整数部分。的整数部分。?INT(12.6),INT(-12.6)12 -12(3)MOD(X,Y):求模函数:求模函数函数值为函数值为X除以除以Y所得的余数所得的余数,符号与符号与Y相同相同?MOD(12,5),MOD(12,-5),MOD(-12,-5)2 -3
27、 -23.3 函数函数362002年9月8日(4)ROUND(X,Y):四舍五入函数四舍五入函数如果自变量如果自变量Y为正整数,则函数值为对为正整数,则函数值为对X按保留按保留Y位小数进行四舍五入处理的结果位小数进行四舍五入处理的结果如果如果Y为为0,则把,则把X四舍五入为整数四舍五入为整数如果如果Y为负数,则把为负数,则把X四舍五入到小数点以左若四舍五入到小数点以左若干位,干位,但舍去的位填上但舍去的位填上0,以保留原数的精度。,以保留原数的精度。例例:?ROUND(15.426,2),ROUND(3724.5,-2)15.430 3700.03.3 函数函数372002年9月8日(5)SQ
28、RT(X):算术平方根函数:算术平方根函数 自变量自变量X为正数,函数值为为正数,函数值为X的算术平方根。的算术平方根。(6)EXP(X):指数函数:指数函数 函数值为以函数值为以E为底,为底,X为指数的值。为指数的值。(7)LOG(X):自然对数函数:自然对数函数 自变量自变量X为正数,函数值为为正数,函数值为X的自然对数。的自然对数。(8)MAX(X,Y):取最大值函数:取最大值函数 函数值为函数值为X、Y中较大者。中较大者。(9)MIN(X,Y):取最小值函数:取最小值函数 函数值为函数值为X、Y中较小者。中较小者。3.3 函数函数382002年9月8日(二二)字符处理函数字符处理函数此
29、类函数用于处理字符型数据,在以下说明中如无此类函数用于处理字符型数据,在以下说明中如无特别指定,自变量特别指定,自变量X 均为字符型表达式。均为字符型表达式。(1)LEN(X):求字符串长度函数求字符串长度函数 函数值为字符表达式函数值为字符表达式X的长度。的长度。a=abcd?LEN(a),LEN(a),4 1 USE student?LEN(学号学号),LEN(学号学号)5 4 3.3 函数函数392002年9月8日(2)LEFT(X,N):左截子串函数:左截子串函数 函数值为对函数值为对X截取其左边的截取其左边的N个字符而形成的子串个字符而形成的子串 str=FoxPRO?LEFT(st
30、r,3)Fox(3)RIGHT(X,N):右截子串函数右截子串函数 函数值为对函数值为对X截取其右边的截取其右边的N个字符而形成的子串。个字符而形成的子串。str=FoxPRO?RIGHT(str,3)PRO3.3 函数函数402002年9月8日(4)SUBSTR(X,N,M)任意截取子串函数任意截取子串函数函数值为函数值为X的子字符串,即对的子字符串,即对X这个字符串从第这个字符串从第N个字符开始截取个字符开始截取M个字符而形成的新字符串。个字符而形成的新字符串。若使用时省略若使用时省略M,则取到,则取到X的最后一个字符。的最后一个字符。自变量自变量N,M 自动取整。自动取整。str=中文中
31、文VFP数据库系统数据库系统?SUBSTR(str,5,3)VFP?SUBSTR(str,8,6)数据库数据库3.3 函数函数412002年9月8日(5)AT(X,Y):查子串位置函数查子串位置函数 变量变量X,Y均为字符型表达式。均为字符型表达式。在在Y中查找中查找X,函数值为,函数值为X在在Y中第一次中第一次出现的起始位置出现的起始位置(一个正整数一个正整数)。如果在如果在Y中找不到中找不到X,则函数值为,则函数值为0。str=中华人民共和国中华人民共和国?AT(“人民人民”,str),AT(“中国中国”,str)5 03.3 函数函数422002年9月8日(6)STUFF(X,N,M,Y
32、):字符串替换函数字符串替换函数从从X的第的第N个字符开始,删去个字符开始,删去M个字符,再把个字符,再把Y插入到插入到这个位置,形成新字符串这个位置,形成新字符串自变量自变量X为被替换的字符串,为被替换的字符串,Y为替换字符串,为替换字符串,N为正为正整数,整数,M为非负整数。为非负整数。s1=ABCDEFG s2=1234 s3=“”(注:注:S3为空字符,其长度为为空字符,其长度为0)?STUFF(s1,3,2,s2),STUFF(s1,3,2,s3)AB1234EFG ABEFG?STUFF(S1,3,0,S2)AB1234CDEFG3.3 函数函数432002年9月8日(7)TRIM
33、(X)或或 RTRIM(X):删去尾部空格函数删去尾部空格函数 函数值为把函数值为把X尾部的空格去掉后得到的字尾部的空格去掉后得到的字符串。符串。s=Fox?s+“PRO Fox PRO?TRIM(S)+“PRO FoxPRO3.3 函数函数442002年9月8日(8)LTRIM(X):删去左端空格函数删去左端空格函数 函数值为把函数值为把X前部的空格去掉后得到的字符串前部的空格去掉后得到的字符串.s1=Fox s2=PRO?S1+S2 Fox PRO?S1+LTRIM(S2)FoxPRO(9)ALLTRIM(X):删去前后空格函数删去前后空格函数3.3 函数函数452002年9月8日(10)
34、UPPER(X):小写字母转换为大写字母小写字母转换为大写字母(11)LOWER(X):大写字母转换为小写字母大写字母转换为小写字母 这两个转换函数的函数值仍为字符串。这两个转换函数的函数值仍为字符串。s=“Visual FoxPRO?UPPER(s),LOWER(s)VISUAL FOXPRO visual foxpro3.3 函数函数462002年9月8日(12)SPACE(N):生成空格字符串函数生成空格字符串函数 函数值为由函数值为由N个空格组成的字符串。个空格组成的字符串。s=SPACE(5)?S,LEN(s)5(13)REPLICATE(X,N):字符串重复函数字符串重复函数 函数
35、值为把函数值为把X重复重复N次所形成的新字符串次所形成的新字符串.?REPLICATE(Very,3)+Good!Very Very Very Good!3.3 函数函数472002年9月8日(14)TRANSFORM(X,Y):格式化输出函数:格式化输出函数自变量自变量X可以是字符型或数值型表达式,可以是字符型或数值型表达式,Y是一是一个字符串个字符串(格式说明格式说明)。函数值为按函数值为按Y格式输出的格式输出的X值,为字符型。值,为字符型。s1=Fox n=23.456?TRANSFORM(S1,!),TRAN(N,$.$)FOX$23.563.3 函数函数482002年9月8日(15)
36、字符替换函数字符替换函数CHRTRAN(,)在在中查找与中查找与中字中字符相等的字符,并用符相等的字符,并用中对应位中对应位置上的字符替换置上的字符替换?CHRTRAN(“foxpro”,”fp”,”FP”)FoxPro3.3 函数函数492002年9月8日(16)字符串替换函数字符串替换函数STRTRAN(,1,,2,)在在中查找中查找,并用,并用替换替换?CHRTRAN(“foxpro Programe”,”ro”,”AB”)foxpAB PABgrame 3.3 函数函数502002年9月8日(三三)日期处理函数日期处理函数(1)CTOD(X):字符串转换为日期:字符串转换为日期 自变量
37、自变量X为字符型表达式,其值应具有为字符型表达式,其值应具有“月月/日日/年年”的形式。的形式。函数值则为表示同一日期的日期型数据。函数值则为表示同一日期的日期型数据。dt=CTOD(“10/01/00”)(2)DATE():当前系统日期函数:当前系统日期函数 本函数无自变量,但本函数无自变量,但DATE后面一定要写上一对括后面一定要写上一对括弧以表示这是一个函数。函数值为系统的当前日弧以表示这是一个函数。函数值为系统的当前日期。期。3.3 函数函数512002年9月8日(3)YEAR(X):取日期中的年份取日期中的年份 自变量自变量X为日期型表达式,为日期型表达式,函数值为函数值为X中的年份
38、数字中的年份数字(数值型数值型)。?YEAR(10/01/00)2000(4)DAY(X):日期函数日期函数 自变量自变量X为日期型表达式。为日期型表达式。函数值为函数值为X中的日期数中的日期数 字字(数值型数值型)。?DAY(10/01/00)13.3 函数函数522002年9月8日(5)MONTH(X):月份函数月份函数 自变量自变量X为日期型表达式。为日期型表达式。函数值为函数值为X中的月份数字中的月份数字(数值型数值型)。?MONTH(CTOD(10/10/95)10(6)CMONTH(X):月份名称函数月份名称函数 与与MONTH(X)类似,但函数值为月份的英文名称。类似,但函数值为
39、月份的英文名称。?CMONTH(CTOD(10/10/95)October3.3 函数函数532002年9月8日(7)DOW(X):星期函数星期函数自变量自变量X为日期型表达式。为日期型表达式。函数值为函数值为X所指的那一天是一周中的第几天所指的那一天是一周中的第几天(数值型,数值型,星期日为第星期日为第1天,星期一为第天,星期一为第2天,天,.)。?DOW(CTOD(07/04/96)5(8)CDOW(X):星期名称函数星期名称函数 与与DOW(X)类似,但函数值为星期几的英文名称类似,但函数值为星期几的英文名称.?CDOW(CTOD(07/04/96)Thursday3.3 函数函数542
40、002年9月8日(9)日期转换为字符串函数日期转换为字符串函数格式:格式:DTOC(X,1)自变量自变量X为日期型表达式。为日期型表达式。1为可选项,加为可选项,加1转换为转换为“年月日年月日”格式格式不加不加1转换为转换为“月日年月日年”格式。格式。?DTOC(DATE(),DTOC(DATE(),1)10/01/00 20001001格式:格式:DTOS(X):同:同 DTOC(X,1)3.3 函数函数552002年9月8日(四四)字符型与数值型数据之间转换函数字符型与数值型数据之间转换函数(1)STR(X,N,M ):数值转换为字符串函数数值转换为字符串函数 将数值型表达式将数值型表达式
41、X转换为字符串。转换为字符串。N和和M均为正整数且均为正整数且N=(M+2),分别代表转换后分别代表转换后字符串的总长度和小数部分的长度。字符串的总长度和小数部分的长度。n=1234.567?STR(n,8,3)1234.567 如果如果NM比比X的整数部分位数还少,则函数自动减的整数部分位数还少,则函数自动减少小数位数而保留整数部分。少小数位数而保留整数部分。?STR(n,6,2)1234.53.3 函数函数562002年9月8日l 如果如果N比比X的整数部分位数还少,则函数值的整数部分位数还少,则函数值以一串以一串*号表示号表示“溢出溢出”。l 如果不指定如果不指定M值,则意味着只有整数部
42、分。值,则意味着只有整数部分。?STR(n,8)1234 l 如果如果N,M均不指定,则按缺省规定转换均不指定,则按缺省规定转换为长度为为长度为10,且无小数部分的字符串。,且无小数部分的字符串。l 如果指定的总长度如果指定的总长度N小于表达式的长度,小于表达式的长度,则尽管指定了小数位数则尽管指定了小数位数M,转换时也是首,转换时也是首先保留整数部分。先保留整数部分。3.3 函数函数572002年9月8日(2)VAL(X):字符串转为数值函数字符串转为数值函数自变量自变量X为数字形式为数字形式(即只包含数字、小数点或即只包含数字、小数点或、号、号)的字符串。的字符串。函数值为与该数字字符串对
43、应的数值型数据。函数值为与该数字字符串对应的数值型数据。?VAL(1234.56)+200 1434.56转换中遇非数字字符终止转换转换中遇非数字字符终止转换?VAL(12.56AS789)12.56 3.3 函数函数582002年9月8日(3)CHR(X):ASCII码转换成字符函数码转换成字符函数自变量自变量X为为0255之间的整数。函数值为以之间的整数。函数值为以X为为ASCII码码(十进制十进制)的字符。的字符。?CHR(7)+CHR(7)(机器发出响铃机器发出响铃)?CHR(65)+CHR(49)A1(4)ASC(X):字符转为字符转为ASCII码函数码函数函数值为函数值为X的第一个
44、字符的的第一个字符的ASCII码。码。?ASC(FoxBASE)703.3 函数函数592002年9月8日(五五)测试函数测试函数(1)FILE(X):测试磁盘文件存在函数测试磁盘文件存在函数自变量自变量X为某磁盘文件的文件名为某磁盘文件的文件名(包包括扩展名,可包括路径括扩展名,可包括路径),为字符型。,为字符型。函数值为逻辑型,该文件存在,其函数值为逻辑型,该文件存在,其值为值为.T.,否则为,否则为.F.。?FILE(SB.DBF).T.(当前盘上有当前盘上有SB.DBF文件文件)3.3 函数函数602002年9月8日(2)TYPE(X):测试表达式数据类型测试表达式数据类型自变量为一字
45、符型表达式,其内容是被测试的表自变量为一字符型表达式,其内容是被测试的表达式。也就是必须把被测表达式写在一对定界符之达式。也就是必须把被测表达式写在一对定界符之内。内。函数值为该被测试表达式的值的类型函数值为该被测试表达式的值的类型(用一个大写用一个大写字母表示:字母表示:N,C,L,D,M,G或或U表示,表示,(其中其中U表示表示未定义未定义)。num=24?TYPE(“num-20),TYPE(“num32)N L3.3 函数函数612002年9月8日?TYPE(.T.),TYPE(N)L C?TYPE(DATE(),TYPE(“char”)D U USE sb?TYPE(“编号编号”),
46、TYPE(“备注备注”),TYPE(“价价格格”)C M N3.3 函数函数622002年9月8日(3)ISALPHA(X):测试测试X的首字符是否为字母的首字符是否为字母自变量自变量X为字符型表达式。为字符型表达式。如果如果X的值的第一个字符是一个英文字母,的值的第一个字符是一个英文字母,则函数值为则函数值为.T.,否则为,否则为.F.。(4)ISLOWER(X):测试测试X的首字符是否为小写字母的首字符是否为小写字母自变量自变量X为字符型表达式。为字符型表达式。如果如果X的值的第一个字符是一个小写字母,的值的第一个字符是一个小写字母,则函数值为则函数值为.T.,否则为,否则为.F.。3.3
47、 函数函数632002年9月8日(5)ISUPPER(X):测试测试X的首字符是否为大写字母的首字符是否为大写字母自变量自变量X为字符型表达式。为字符型表达式。如果如果X的值的第一个字符是一个大写字母,则的值的第一个字符是一个大写字母,则函数值为函数值为.T.,否则为,否则为.F.。str=Fox?ISAL(str),ISLO(str),ISUP(str).T.F.T.3.3 函数函数642002年9月8日(6)IIF(X,A,B):条件判断函数条件判断函数自变量自变量X为一逻辑型表达式,为一逻辑型表达式,A与与B为两个任意为两个任意类型的表达式。类型的表达式。当当X为逻辑为逻辑“真真”时,函
48、数值取时,函数值取A值;值;当当X为逻辑为逻辑假假时,函数值取时,函数值取B值。值。XB1=.T.XB2=.F.?IIF(XB1,男男,女女),IIF(XB2,男男,女女)男男 女女3.3 函数函数652002年9月8日(7)BETWEEN(,):在在 与与 之间,之间,函数值函数值为为.T.,否则为,否则为.F.。?BETWEEN(“f”,“a”,”h”)(“f”,“a”,”h”).T.T.3.3 函数函数662002年9月8日(8)EMPTY():为空,为空,函数值为函数值为.T.,否则为,否则为.F.。?EMPTY(“”)(“”).T.T.3.3 函数函数672002年9月8日(9)TY
49、PE(“(“”)”):测试测试 的类型的类型。?T Y P E(“.T.”),(“.T.”),T Y P E(“1 2 3”),(“1 2 3”),TYPE(”china”)(”china”)L N C L N C 3.3 函数函数682002年9月8日(10)INLIST(“(“,1,”)”)测试测试 是否在是否在 后面的表达式中。后面的表达式中。country=“China”?INLIST(country,”Canada”,”USA”,”China”).T.3.3 函数函数692002年9月8日(六六)系统环境测试函数系统环境测试函数此类函数测试系统工作环境,多数没有自变量。此类函数测试系
50、统工作环境,多数没有自变量。(1)测试当前系统时间函数测试当前系统时间函数 格式:格式:TIME()函数值为函数值为“时时:分分:秒秒”的形式表示的当前的形式表示的当前 系统时间系统时间 (字符型字符型)。例如:。例如:?系统时间为系统时间为+TIME()系统时间为系统时间为14:28:473.3 函数函数702002年9月8日(2)DISKSPACE():测试磁盘空间测试磁盘空间 函数值为当前工作磁盘上可用的剩余空间,函数值为当前工作磁盘上可用的剩余空间,单位为字节数单位为字节数(数值型数值型)。(3)ROW():测试光标行坐标测试光标行坐标(4)COL():测试光标列坐标测试光标列坐标 函