VisualFoxPRO语言元素.ppt

上传人:小飞机 文档编号:6523152 上传时间:2023-11-08 格式:PPT 页数:83 大小:339.05KB
返回 下载 相关 举报
VisualFoxPRO语言元素.ppt_第1页
第1页 / 共83页
VisualFoxPRO语言元素.ppt_第2页
第2页 / 共83页
VisualFoxPRO语言元素.ppt_第3页
第3页 / 共83页
VisualFoxPRO语言元素.ppt_第4页
第4页 / 共83页
VisualFoxPRO语言元素.ppt_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《VisualFoxPRO语言元素.ppt》由会员分享,可在线阅读,更多相关《VisualFoxPRO语言元素.ppt(83页珍藏版)》请在三一办公上搜索。

1、第2章 Visual FoxPro语言元素,内容提要:,命令语法规则 数据类型和文件类型 常量与变量 运算符与表达式 函数,2.1命令语法规则,命令格式范围FieldsFor|WHILE,命令中的符号约定,(1):广括号中的内容是可选项(2):尖括号中的内容是必选项(3)|:要求从本符号的左右两项中选择一项(4):命令中的某些部分以类似的方式延续,命令中的短语,1、范围ALL:当前表的全部记录NEXT:从当前记录开始的连续n条记录RECORD:当前表的第n号记录REST:从当前记录开始到最后一条记录2、fields 指出要操作的字段3、for或while指出对满足条件的记录进行操作,条件为逻辑

2、表达式,命令规则,任何命令必须以命令动词开头,后面的多个子句与顺序无关;命令行中的命令、短语间必须用空格隔开,各对数间用逗号隔开;命令行中的命令动词可简写前4个字符;命令的最大长度为254个字符,一行写不下时,可用分行符“;”续行;不区分大小写;VFP没有规定系统保留字,在选择变量名、字段名和文件名时应尽量不使用系统中的动词或其他使用过的名字。,2.2数据类型和文件类型,数据类型是数据的基本属性。对数据进行操作时,只有同类型的数据才能进行操作,若对不同类型的数据进行操作系统将判为语法出错。,数据类型(13种),(1)字符型(Character)通常用于存储键盘输入的文本数据。汉字、字母、数字、

3、空格、符号及标点符号字符型数据必用双引号或单引号或来定界如:“how”1234 中国人字符型字段的宽度最大为254 每个字符占一个字节,一个汉字占2个字节。,(2)货币型(Currency)保存货币数值时,用货币类型而不是数值类型字段最多保留4位小数位数,多则四舍五入至4位每个货币型数据占8个字节内存变量用$数值来赋初值如:x=$999?Type(x),(3)数值型(Numeric)数值型字段用来存储数值数据。它可以包含数字09,也可以带正、负号或小数点 如:1234 100.89(4)浮点型(Float)浮点型字段在功能上等价于数值型字段。,(5)日期型(Date)用于存储包含有年、月、日的

4、日期数据长度为8字节日期型数据表示有多种,常用的格式为mm/dd/yyyy(6)日期时间型(DateTime)用于存储包含有年、月、日、时、分、秒的日期和时间数据。(7)双精度型(Double)双精度型用于存储精度要求较高、位数固定的数值,或真正的浮点数值。,(8)备注型(Memo)用于存储不定长度的文本数据当文本数据长度可能大于254,无法使用字符型存储时,使用备注类型字段所有备注型字段的实际内容存储在和表名相同,扩展名为.FPT的备注文件中,(9)通用型(General)通用型用于存储OLE对象数据字段宽度固定为4个字节,用于存储一个4个字节的指针,指向该字段的实际内容其内容存储在扩展名为

5、.FPT的文件中。OLE对象包括电子表格、字处理文档、图像或其他多媒体对象等OLE对象可以用链接方式存储在表中。存储数据的大小,取决于相的OLE服务程序,和磁盘空间大小的限制。,(10)整型(Integer)整型用于存储整数数据字段宽度固定为4个字节。取值范围从-2 147 483 647 到2 147 483 646。(11)逻辑型(Logical).T.或.Y.为逻辑真.F.或.N.为逻辑假长度固定为1字节,(12)字符型(二进)(Character(Binary)字符型(二进制)用于存储不需要系统代码页维护的字符数据其他字段特性同字符型字段(13)备注型(二进制)(Memo(Binary

6、)备注型(二进制)用于存储不需要系统代码页维护的备注字段数据。其他字段特性同备注型字段。,文件类型,扩展名 类 型.DBC 数据库文件.DCT 数据库备注文件.DCX 数据库索引文件.BAK 备份文件.DBF 数据表文件.FPT 数据表备注文件.PJX 项目文件.PJT 项目备注文件,文件格式:盘符:路径.扩展名,常用的文件类型:,扩展名 类 型.PRG 源程序文件.FXP 源程序编译后的文件.CDX 数据表复合索引文件.IDX 单一索引文件.SCX 表单文件.SCT 表单备注文件.SPR 为源程序.SPX 为目标程序,常用的文件类型,扩展名 类 型.FRX 报表文件.FRT 报表备注文件.L

7、BX 标签文件.LBT 标签备注文件.MNX 菜单文件.MNT 菜单备注文件.MPR 菜单源程序文件.MPX 菜单编译文件,常用的文件类型,扩展名 类 型.QPR 生成的查询程序文件.QPX 查询程序文件编译后的文件.FMT 格式文件.MEM 内存变量文件.VUE 视图文件.APP 应用程序文件.TXT 文本文件.EXE 可执行应用程序文件,常用的文件类型,一、常量(值始终不变的量)(6种)数值型:由小数点、数字、正负号组成 长度=20位(含+、-、.)小数点为半角的 字符型 由汉字、数字、字母、空格、专用符号组成 长度0-254个字符(0为空串)用单引号、双引号、中括号定界 逻辑型 由和组成

8、(或和)长度位 T、F两侧小数点不可以省略,2.3常量与变量,货币型 组成同数值 小数位位 由&标识 例:.日期型 格式:YYYY/MM/DD MM/DD/YYYY 长度8位 分隔符:日期时间型格式:YYYY/MM/DD:MM/DD/YYYY:长度位,日期格式设置命令:(1)set mark to 日期分隔符 作用:输出日期时分隔符号(减号、小数点、空格、分号)例:set mark to-(2)set datetoAmericanansi britishymd mdydmy 规定年月日顺序及分隔符号(3)set century on|off 作用:设置年份的位数on 为位、off为位。,例:?

9、date()Set mark to“-”?date()Set date to ymdSet mark to“”?date()Set century off?date(),二、变量,1、分类:内存变量(普通内存变量、数组)、字段变量。2、命名规则:1)由数字、字母、汉字、下划线组成。2)不以数字开头,不可以包含空格。3)长度1128字符。4)不能使用VFP的保留字。例:4F f4 a1-2 adb 哪个为非法变量名?3、当前字段变量与内存变量同名时 字段变量优先,此时内存变量要以“M.变量名”或“M变量名”表示。,4、变量赋值:格式1:变量名 格式2:store to 变量名1,变量名2 例:x

10、=6+5,5、输出内存变量 格式:?|?功能:显示一个或多个表达式的值 说明:?表示换行后显示输出表达式中各表达式的值?表示不换行直接在当前行显示输出表达式表中各表达式的值。,(正确),(正确),(错误),store 2,3 to x,y,store 6+3 to x,y,store 6+3 to x,6、常用内存变量操作 显示内存变量 List Memory Like To Print|To File Display Memory Like To Print|To File 功能说明:显示当前内存变量的名称,作用域,类型,值等信息.Like 子句设置显示符合条件的变量,通配符为*|?;To

11、子句设置将信息同时打印输出或保存到指定文件;格式 连续显示,格式 分屏显示.,清除内存变量 Clear Memory Release Release All Extended Release All Like|Except 功能说明:清除内存变量,释放它们所占用的内存空间;格式清除所有内存变量,格式清除指定内存变量;在命令窗口中格式与格式功能相同,在程序中需要可选项;格式中,Like子句清除与通配符匹配的内存变量,而 Except子句则清除与通配符不匹配的内存变量;数组变量清除以数组为单位,命令中不能出现数组元素。,保存内存变量Save To All Like|All Except 功能说明:

12、将当前全部/部分内存变量保存到指定 内存变量文件(默认扩展名.mem)中;无可选项,保存全部,有可选项,保存指定的.数组变量的保存以数组为单位,不允许只保存数组元素。恢复内存变量 Restore From Additive 功能说明:将指定内存文件中保存的内存变量恢复到内存中;无可选项,先清除当前内存变量再恢复;可选项,保留当前变量,文件中的变量追加到内存中;若追加的变量与当前变量同名,当前变量被替换.,系统变量 变量名以“_”为首字符,由 VFP 系统在启动时自动定义,其中保存着系统运行环境参数。应通过系统设置命令或操作修改,而不要随意地直接改变它们;,三、数组变量,数组:一组内存变量的集合

13、1、定义数组:dimention(,)例:dime a(4),b(2,3),数组名,下标的上界,b数组为二维数组,由行和列形式表示的数组元素矩阵,其顺序为a(1,1),a(1,2),a(1,3),a(2,1),a(2,2),a(2,3),说明:(1)数组名的命名同内存变量;(2)下标的下界为1;(3)同一个数组的各个元素数据类型可以不同;(4)未赋值的数组元素的数据类型为逻辑型.F.;(5)每个元素可以通过下标来访问。,2、数组的赋值 赋值方法同内存变量的赋值 如:dim x(3),a(2,3)X(1)=10 X(2)=计算机 A(1,1)=“world”,2.4 运算符与表达式,VFP中主要

14、有5类运算符和表达式:算术运算符和算术表达式字符运算符和字符表达式关系运算符和关系表达式逻辑运算符和逻辑表达式日期运算符和日期表达式,1.算术运算符和算术表达式,算术表达式:(表达式结果为数值型)是由算术运算符和数值型常数、变量、函数组成。运算结果为数值型数据。算术运算符为:+-*()优先次序:括号、函数、乘方、乘除和加减,同级运算从左到右依次进行如:362EXP(8)LOG(20)25,2.字符串运算符和字符串表达式,字符表达式:(表达式结果为字符型)是由字符运算符和字符型常数(即用定界符括起来的字符串)、变量、函数组成。运算结果是字符型数据。三种字符串运算:+连接-将左串尾部空格移动到连接

15、结果尾部$左串是否为右串的一部分,完全连接运算格式:字符串1+字符串2功能:将两个字符串连接为一个字符串。例如:?THIS IS A PEN 输出:THIS IS A PEN 完全连接是指两个字符串合并,即包括空格在内的字符串中所有字符相加。,不完全连接运算格式:字符串1-字符串2功能:将两个字符串连接为一个字符串,但是删去字符串1尾部的空格符例如:?“首都*北京输出:首都:北京*注:串1尾部的空格移到串1后,包含运算,格式:串1$串2功能:如串1包含在串2中,表达式的值为真,否则为假。例如:ABACBTE结果为假(F)ABABCDE结果为真(T)注:包含运算是字符串的关系运算关系运算返回的是

16、逻辑值,3.关系运算符和关系表达式,关系表达式:(表达式结果为逻辑型)是由关系运算符与字符表达式或数值表达式组成结果是一个逻辑值关系成立结果取真(.T.),不成立结果取假(F)关系运算符两边的数据类型要一致,(同类型)运算符有:=、#或!=,例:?123100?CHCA“,注:字符的比较是ASCII码值的大小空格0-9A-Za-z,汉字是按机内码值比较的(拼音)“=”比较字符串时:set exact on时 将短串尾部加空格补齐再比set exact off 时 判断右串是否为左串的一部分“=”专用于比字符串,是否完全一致,4.逻辑表达式,逻辑表达式:(表达式对象和结果为逻辑型)是由逻辑常数、

17、变量和函数用逻辑运算符连接而成条件判断满足结果为真(.T.),否则结果为假(.F.)逻辑运算符有三种:.AND.逻辑与(且)(两都成立才为真).OR.逻辑或(只要有一个成立为真).NOT.或!逻辑非(与原来相反)逻辑运算符的优先级别为:NOT AND OR,例:not(35)and 35 35 or 53,5、日期时间运算符和日期时间表达式日期时间运算符有:+、-表达式对象为D 或T类型 说明:D+D 两日期表达式相加,属非法表达式 D D 两个日期相差的天数 D+N 表示从当前日期往后数N天 D N 表示从当前日期向前数N天,如:DATE()+5 DATE()-5,运算符的优先顺序,表达式中

18、运算符的优先顺序:由高到低依次为:算术或字符或日期运算关系运算逻辑运算相同优先级的运算按从左到右的顺序计算例如:性别男AND职称副教授?(10+3)5.and.”ab”$”abcde”,2.5 函数,函数-是用程序来实现的一种数据运算或转换。每一个函数都有特定的数据运算或转换功能,它往往需要若干个自变量,即运算对象,但只能有一个运算结果,称为函数值或返回值。函数可以用函数名和一对圆括号加以调用,自变量放在圆括号里,如LEN(x)。函数调用可以出现在表达式里,表达式将函数的返回值作为自己运算的对象。函数调用也可作为一条命令使用,但此时系统忽略函数的返回值。本章将常用函数分为数值函数、字符处理函数

19、、日期类函数、数据类型转换函数、测试函数5类,通过举例分别介绍。,一、数值函数二、字符函数三、日期时间函数四、数据类型转换函数五、测试函数,常用函数,(运算对象和运算结果都是数值)1.绝对值函数格式:ABS(数值表达式)功能:返回指定的数值表达式的绝对值。例如:?ABS(10),ABS(-5)10 5,一、数值函数,2.符号函数格式:SIGN(数值表达式)功能:返回指定数值表达式的符号。当表达式的运算结果为正、负和零时,函数值分别为1、-1和0。例如:?SIGN(-10),SIGN(0),SIGN(5)-1 0 1,3.求平方根函数格式:SQRT(数值表达式)功能:返回指定表达式的平方根。自变

20、量表达式的值不能为负。例如:?SQRT(4)24.圆周率函数 格式:PI()功能:返回圆周率(数值型)。该函数没有自变量。,5.求整数函数格式:INT(数值表达式)CEILING(数值表达式)FLOOR(数值表达式)功能:INT()返回指定数值表达式的整数部分。CEILING()返回大于或等于指定数值表达式的最小整数。FLOOR()返回小于或等于指定数值表达式的最大整数。例如:X=5.8?INT(X),INT(-X),CEILING(X)5-5 6?CEILING(-X),FLOOR(X),FLOOR(-X)-5 5-6,6.四舍五入函数ROUND(数值表达式1,数值表达式2)功能:返回指定表

21、达式在指定位置四舍五入后的结果。数值表达式2指明四舍五入的位置。数值表达式2=0,表示要保留的小数位数数值表达式20,表示整数部分的舍入位数。例如:X=645.345?ROUND(X,2),ROUND(X,1),ROUND(X,0)645.35 645.3 645?ROUND(X,-1)650,7.求余数函数格式:MOD(数值表达式1,数值表达式)功能:返回两个数值相除后的余数。说明:数值表达式1是被除数,数值表达式2是除数。余数的正负号与除数相同。如果被除数与除数同号,那么函数值即为两数相除的余数;如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值。例如:?MOD(10,3),MO

22、D(10,-3)1-2?MOD(-10,3),MOD(-10,-3)2-1,8.求最大值和最小值函数 MAX(数值表达式1,数值表达式2 MIN(数值表达式1,数值表达式2,功能:MAX()计算各自变量表达式的值,并返回其中的最大值。MIN()计算各自变量表达式的值,并返回其中的最小值。说明:自变量表达式的类型可以是数值型、字符型、货币型、双精度型、浮点型、日期型和日期时间型,但所有表达式的类型必须相同。例如:?MIN(8,100),MAX(8,100)100 8?MIN(工作,学习,休息)工作,字符函数是指自变量一般是字符型数据的函数。1.求字符串长度函数格式:LEN(字符表达式)功能:返回

23、指定字符表达式值的长度,即所包含的字符个数。函数值为数值型。例如:X=book?LEN(X)4,二 字符函数,2.小写转换函数格式:LOWER(字符表达式)功能:将指定表达式值中的大写字母转换成小写字母,其他字符不变。例如:?LOWER(BOOK),LOWER(abcDeFg20)book abcdefg20,3.大写转换函数格式:UPPER(字符表达式)功能:将指定表达式值中的小写字母转换成大写字母,其他字符不变。例如:?UPPER(work),UPPER(abcDeFg)WORK ABCDEFG,4.空格字符串生成函数格式:SPACE(数值表达式)功能:返回由指定数目的空格组成的字符串。例

24、如:?FOX+SPACE(3)+PRO FOX PRO,5.删除前后空格函数格式:TRIM(字符表达式)LTRIM(字符表达式)ALLTRIM(字符表达式)功能:TRIM()返回指定字符表达式值去掉尾部空格后形成的字符串。LTRIM()返回指定字符表达式值去掉前导空格后形成的字符串。ALLIRIM()返回指定字符表达式值去掉前导和尾部空格后形成的字符串。例如:STORE SPACE(1)+VFP+SPACE(3)TO X?TRIM(X)+LTRIM(X)+ALLTRIM(X)VFPVFP VFP?LEN(X),LEN(TRIM(X),LEN(LTRIM(X),LEN(ALLTRIM(X)7 4

25、 6 3,6.取子串函数格式:LEFT(,)RIGHT(,)SUBSTR(,)功能:LEFT()从指定表达式值的左端取一个指定长度的子串作为函数值。RIGHT()从指定表达式值的右端取一个指定长度的子串作为函数值。SUBSTR()从指定表达式的值指定起始位置取指定长度的子串作为函数值。说明:在SUBSTR()函数中,若缺省第三个自变量长度,则函数从指定位置一直取到最后一个字符。例如:STORE GOOD BYE!TO X?LEFT(X,2),SUBSTR(X,6,2)+SUBSTR(X,6)GO BYBYE!?RIGHT(X,3)YE!,7.计算子串出现次数函数格式:OCCURE(,)功能:返

26、回第一个字符串在第二个字符串中出现的次数,函数值为数值型。若第一个字符串不是第一个字符串的子串,函数值为0。例如:STORE abarabcadababcrTO X?OCCURE(a,X),OCCURE(b,X),OCCURE(c,X),OCCURE(f,X),OCCURE(r,X)6 4 2 0 2,8.求子串位置函数AT(,)ATC(,)功能:AT()的函数值为数值型。如果字符表达式1是字符表达式2的子串,则返回字符表达式1值的首字符在字符表达式2值中的位置;若不是子串,则返回0。说明:ATC()与AT()功能类似,但在子串比较时不区分字母大小写。第三个自变量数值表达式用于表明要在字符表达

27、式2值中搜索字符表达式1值的第几次出现,其默认值是1。例如:STORE This is Visual FoxPro TO x?AT(pro,x),ATC(fox,x)0 16?AT(is,x,3),AT(xo,x)10 0,9.子串替换函数STUFF(,)功能:用字符表达式2值替换字符表达式1中由起始位置和长度指明的一个子串。说明:替换和被替换的字符个数不一定相等。如果长度值是0,字符表达式2则插在由起始位置指定的字符前面。如果字符表达式2值是空串,那么字符表达式1中由起始位置和长度指明的子串被删去。例如:STORE GOOD BYE!TO X1STORE MORNINGTO X2?STUFF

28、(X1,6,3,X2),STUFF(X1,1,4,X2)GOOD MORNING!MORNING BYE!,10.字符替换函数CHRTRAN(,)功能:当第一个字符串中的一个或多个字符与第二个字符串中的某个字符相匹配时,就用第三个字符串中的对应字符(相同位置)替换这些字符。说明:如果第三个字符串包含的字符个数少于第二个字符串包含的字符个数,因而没有对应字符,那么第一个字符串中相匹配的各字符将被删除。如果第三个字符串包含的字符个数多于第二个字符串包含的字符个数,多余字符被忽略。该函数的自变量是三个字符表达式。例如:x1=CHRTRAN(ABACAD,ACD,X12)y1=CHRTRAN(计算机A

29、BC,计算机,电脑)z1=CHRTRAN(大家好!,大家,您?x1,y1,zXBX1X2 电脑 ABC 您好!,11.字符串匹配函数LIKE(字符表达式1,字符表达式2)功能:比较两个字符串对应位置上的字符,若所有对应字符都相匹配,则函数返回逻辑真(.T.),否则返回逻辑假(.F.)。说明:字符表达式1中可以包含通配符*和?。*可与任何数目的字符相匹配,?可以与任何单个字符相匹配。例如:STORE abc TO XSTORE abcd TO y?LIKE(ab*,x),LIKE(ab*,y),LIKE(x,y).T.T.F.?LIKE(?b?,x),LIKE(Abc,x).T.F.,三 日期和

30、时间函数,日期和时间函数的自变量一般是日期型数据或日期时间型数据。1.系统日期和时间函数格式:DATE()TIME()DATETIME()功能:DATE()返回当前系统日期,函数值为日期型。TIME()以24小时制、hh:mm:ss格式返回当前系统时间,函数值为字符型。DATETIME()返回当前系统日期时间,函数值为日期时间型。例如:?DATE(),TIME()082503 16:59:05?DATETIME()082503 04:59:05PM,2.求年份、月份和天数函数YEAR(日期表达式|日期时间表达式)MONTH(日期表达式|日期时间表达式)DAY(日期表达式|日期时间表达式)功能:

31、YEAR()从指定的日期表达式或日期时间表达式中返回年份(如2003)。MONTH()从指定的日期表达式或日期时间表达式中返回月份。DAY()从指定的日期表达式或日期时间表达式中返回月里面的天数。说明:这三个函数的返回值都为数值型。例如:STORE 2001-08-25 TO d?YEAR(d),MONTH(d),DAY(d)2003 8 25,3.时、分和秒函数格式:HOUR(日期时间表达式)MINUTE(日期时间表达式)SEC(日期时间表达式)功能:HOUR()从指定的日期时间表达式中返回小时部分(24小时制)。MINUTE()从指定的日期时间表达式中返回分种部分。SEC()从指定的日期时

32、间表达式中返回秒数部分。这三个函数的返回值都为数值型。例如:STORE 2003-08-25 04:20:40 P TO t?HOUR(t),MINUTE(t),SEC(t)16 20 40,四 数据类型转换函数,数据类型转换函数的功能是将某一种类型的数据转换成另一种类型的数据。1.数值转换成字符串STR(,)功能:将数值表达式经小数位数和长度的处理后转换为字符串 规则:1)舍弃小数位时四舍五入。2)长度多于规定长度时再舍弃小数部分,小数部分全部舍弃后长度仍大于规定长度输出规定长度个*号。3)长度不足规定长度,加前导空格补足。4)小数位数默认为0,长度默认为10。例如:STORE-834.45

33、6 TO X?X=+STR(X,8,3),STR(X,6),STR(X)X=-834.456-834-834?STR(X,9,2),STR(X,6,2),(STR(X,3),-834.46-834.5*,2.字符串转换成数值格式:VAL(字符表达式)功能:将字符表达式转换为数值,小数位保留2位。规则:1)遇到非数值位停止转换,前导空格可以忽略。2)首字符非数值,返回0。例如:STORE-6789TO xSTORE.23 TO ySTORE A42TO z?VAL(x),VAL(x+y),VAL(x+z),VAL(z+y)-6789-6789.23-6789.00 0.00,3.字符串转换成日期

34、或日期时间格式:CTOD(字符表达式)CTOT(字符表达式)功能:CTOD()将字符表达式值转换成日期型数据。CTOT()将字符表达式值转换成日期时间型数据。说明:字符串中的日期部分格式要与SET DATE TO 命令设置的格式一致。其中的年份可以用四位,也可以用两位。如果用两位,则世纪由SET CENTURY TO 语句指定。,例如:SET DATE TO YMD SET CENTURY ON SET CENTURY TO 19 ROLLOVER 51 d1=CTOD(20030725)t1=CTOT(20030725+TIME()?d1,t1 20030725 20030725?CTOD(

35、500101)10:31:54PM 20500101?CTOD(510101)19510101注:SET CENTURY TO语句指定:小于51的两位数年份属于21世纪(19+1),而大于等于51的两位数年份属于20世纪(19)。,显示日期或日期时间时,用4位数显示年分,4.日期或日期时间转换成字符串格式:DTOC(日期表达式|日期时间表达式,1)TTOC(日期时间表达式,1)功能:DTOC()将日期型数据或日期时间数据的日期部分转换成字符串.TTOC()将日期时间数据转换成字符串。说明:(1)字符串中日期部分的格式与SET DATE TO语句的设置和SET CENTURY ON|OFF(ON

36、 为四位年份,OFF为两位数年份)语句的设置有关。(2)时间部分的格式与SET HOURS TO 12|24语句的设置有关。(3)DTOC()函数,如果使用选项1,则字符串的格式总是YYYYMMDD,共8个字符。对TTOC()来说,如果使用选项1,则字符串的格式总是为YYYYMMDDHHMMSS,采用24小时制,共14个字符.,例如:STORE DATETIME()TO t?t082503 10:54:49 PM?DTOC(t),DTOC(t)082503 20030825?TTOC(t)082503 19:54:49PM?TTOC(t,1)20030825225449,5.宏替换函数格式:&

37、字符型变量.功能:替换出字符型变量的内容,即&的值是变量中的字符串。说明:如果该函数与其后的字符无明确分界,则要用“.”作函数结束标识。宏替换可以嵌套使用。例如:STORE ZGDA TO XUSE&X&相当于USE ZGDAXM=姓名?&XM+你好!&相当于?姓名+你好!张黎黎你好!&字段变量姓名的值是张黎黎SKIP&转到下条记录?XM,&XM&相当于?XM,姓名 姓名 李艳,五 测试函数,在数据处理过程中,有时用户需要了解操作对象的状态。例如,要使用的文件是否存在、数据库的当前记录号、是否到达了文件尾、检索是否成功、某工作区中记录指针所指的当前记录是否有删除标记、数据类型等信息。尤其是在运

38、行应用程序时,常常需要根据测试结果来决定下一步的处理方法或程序走向。1.空值(NULL值)测试函数格式:ISNULL(表达式)功能:判断一个表达式的运算结果是否为NULL值,若是NULL值返回逻辑真(.T.),否则返回逻辑假(.F.)。例如:STORE.NULL.TO X?X,ISNULL(X).NULL.T.,2.“空”值测试函数格式:EMPTY(表达式)功能:根据指定表达式的运算结果是否为“空”值,返回逻辑真(.T.)或逻辑假(.F.)。说明:(1)这里所指的“空”值与NULL值是两个不同的概念。函数EMPTY(.NULL.)的返回值为逻辑假(.F.)。(2)该函数自变量表达式的类型可以是

39、数值型、字符型、逻辑型、日期型等类型。不同类型数据的“空”值,有不同的规定,如表14.1所示。,3.数据类型测试函数VARTYPE(表达式,逻辑表达式)功能:测试表达式的类型,返回一个大写字母。说明:(1)函数值为字符型。字母的含义如表14.2所示。(2)若表达式是一个数组,则根据第一个数组元素的类型返回字符串。若表达式的运算结果是NULL值,则根据逻辑表达式值决定是否返回表达式的类型;如果逻辑表达式值为.T.,就返回表达式的原数据类型。如果逻辑表达式值为.F.或缺省,则返回X以表明表达式的运算结果是NULL值。,例如:X=AAA STORE 10 TO X STORE.NULL.TO Y S

40、TORE$100.2 TO Z?VARTYPE(X),VARTYPE(Y,.T.)N C?VATRYPE(Y),VARTYPE(Z)X Y,4.表文件尾测试函数 系统对表中的记录是逐条进行处理的。对于一个打开的表文件来说,在某一时刻只能处理一条记录。VFP为每一个打开的表设置了一个内部使用的记录指针,指向正在被操作的记录,该记录称为当前记录。记录指针的作用是标识表的当前记录。最上面的记录是首记录,记为TOP,最下面的记录是尾记录,记为BOTTOM。在第一个记录之前有一个文件起始标识,称为Beginning of File(BOF);在最后一个记录的后面有一个文件结束标识,称为End of Fi

41、le(EOF)。使用测试函数能够得到指针的位置。刚刚打开表时,记录指针总是指向首记录。格式:EOF(工作区号|表别名)功能:测试指定表文件中的记录指针是否指向文件尾,则是返回逻辑真.T.,否则返回逻辑假.F.。说明:表文件尾是指最后一条记录的后面位置。若缺省自变量,则测试当前表文件。若在指定工作区上没有打开表文件,函数返回逻辑假.F.。若表文件中不包含任何记录,函数返回逻辑真.T.。,例如:USE ZGDAGO BOTTOM?EOF().F.SKIP?EOF(),EOF(2)&2号工作区没有打开表.T.F.,5.表文件首测试函数格式:BOF(工作区号|表别名)功能:测试当前表文件(若缺省自变量

42、)或指定表文件中的记录指针是否指向文件首,若是返回逻辑真.T.,否则返回逻辑假.F.。说明:表文件首是指第一条记录的前面位置。若指定工作区上没有打开表文件,函数返回逻辑假.F.。若表文件中不包含任何记录,函数返回逻辑真.T.。,6.记录号测试函数格式:RECNO(工作区号|表别名)功能:返回当前表文件(若缺省自变量)或指定表文件中当前记录(记录指针所指记录)的记录号。说明:如果指定工作区上没有打开表文件,函数值为0。如果记录指针指向文件尾,函数值为表文件中的记录数加1。如果记录指针指向文件首,函数值为表文件中第一条记录的记录号。,7.记录个数测试函数格式:RECCOUNT(工作区号|表别名)功

43、能:返回当前表文件(若缺省自变量)或指定表文件中的记录个数。如果指定工作区上没有打开表文件,函数值为0。说明:该函数返回的是表文件中物理上存在的记录个数。不管记录是否被逻辑删除以及SET DELETED的状态如何,也不管记录是否被过滤(SET FILTER),该函数都会把他们考虑在内。,例如:USE ZGDA&假定表中有8条记录?BOF(),RECNO().F.1SKIP-1?BOF(),RECNO().T.1GO BOTTOM?EOF(),RECNO().F.8SKIP?EOF(),RECNO(),RECCOUNT().T.9 8,8.条件测试函数格式:IIF(,)功能:测试逻辑表达式的值,

44、若为逻辑真.T.,函数返回表达式1的值,若为逻辑假.F.,函数返回表达式2)的值。说明:和表达式2的类型不要求相同。例如:X=100Y=300?IIF(X100,X-50,X+50),IIF(Y100,Y-50,Y+50)150 250SET CENTURY ONSTORE DATE()TO DSTORE DTOC(D)TO X?X,IIF(LEN(X)=8,这是两位数年份,年份是:+STR(YEAR(D),4)08252003 年份是:2003,9.记录删除测试函数格式:DELETED(表的别名|工作区号)功能:测试指定的表,或在指定工作区中所打开的表,记录指针所指的当前记录是否有删除标记“*”。若有为真,否则为假。若缺省自变量,则测试当前工作区中所打开的表。例如:SELECT 0&选择最小号空闲工作区 USE ZGDA&打开职工表 DELETE FOR 性别=“女”AND 职称=“助教”LIST 姓名,性别 FOR DELETED()记录号#姓名 性别 1*张黎黎 女 2*李艳 女,10、值域测试函数 格式:BETWEEN(,,)功能:判断表达式1的值是否=表达式2,并且=表达式3 说明:3个表达式类型要求一致 例:?between(12,1,46).T.,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号