1、第二章 Visual FoxPro程序设计基础2.1 2.1 常量与变量常量与变量 常量通常是指以文字串形式出现在代码常量通常是指以文字串形式出现在代码中的数据,代表一个具体的、不变的值。变量中的数据,代表一个具体的、不变的值。变量用于存储数据,一个变量在不同的时该可以存用于存储数据,一个变量在不同的时该可以存放不同的数据。常量、变量类型包括数值型放不同的数据。常量、变量类型包括数值型(N N)、货币型()、货币型(Y Y)、字符型()、字符型(C C)、日期型)、日期型(D D)、日期时间型()、日期时间型(T T)、逻辑型()、逻辑型(L L)六种)六种。第二章 Visual FoxPro
2、程序设计基础第二章 Visual FoxPro程序设计基础2.1.1 2.1.1 常量常量 常量一个非常重要的特点是类型不同的常量书写格常量一个非常重要的特点是类型不同的常量书写格式不同。式不同。1 1数据值型常量数据值型常量 就是常数,用来表示一个数量大小的具体值,就是常数,用来表示一个数量大小的具体值,由由0 90 9、小数点和正负号构成。数值型数据在内存、小数点和正负号构成。数值型数据在内存中用中用8 8个字节表示。个字节表示。如:如:56 78 0.15 -5656 78 0.15 -56 也可以用科学记数法形式书写来表示很大或很也可以用科学记数法形式书写来表示很大或很小的数:如小的数
3、:如2.8452.84510101212用用2.845E122.845E12表式,表式,5.85.81010-1212用用5.8E-125.8E-12表式。表式。第二章 Visual FoxPro程序设计基础2 2货币型常量货币型常量 表示货币值,和数值型常量类似,但要在前放一个表示货币值,和数值型常量类似,但要在前放一个美元符号(美元符号($),如:),如:$57$68.25 -$78$57$68.25 -$78 此类型数据在存储及运算时采用此类型数据在存储及运算时采用4 4位小数位小数,如有多余如有多余的小数将四舍五入。的小数将四舍五入。它没有科学记数法形式。货币型常它没有科学记数法形式。
4、货币型常量在内存中用量在内存中用8 8个字节表示。个字节表示。3 3字符型常量字符型常量 也称为字符串,通常用来表示人名、代码编号、地名、也称为字符串,通常用来表示人名、代码编号、地名、性别、民族、书名等类似代表特定意义的信息。其书写性别、民族、书名等类似代表特定意义的信息。其书写方法是方法是用半角单引号、双引号或方括号(定界符)把字用半角单引号、双引号或方括号(定界符)把字符串扩起来,规定常量的起始和终止。符串扩起来,规定常量的起始和终止。第二章 Visual FoxPro程序设计基础 如:如:”FDSGED”FDSGED”北京北京”海拉尔海拉尔 中国中国 ”74568”74568”我是一个
5、我是一个”中国中国人人”定界符必须成对,如果定界符本身也做定界符必须成对,如果定界符本身也做字符串内容必须用另一定界符定界。字符串内容必须用另一定界符定界。不包含认何字符的字符串(不包含认何字符的字符串(”)叫空串。)叫空串。与只含空格的字符串(与只含空格的字符串(”)不同。)不同。要注意单问号(要注意单问号(?)命令与双问号()命令与双问号(?)的)的功能功能 第二章 Visual FoxPro程序设计基础 4 4日期型常量日期型常量 有两种书写格式,即有两种书写格式,即严格日期格式和传统日期格严格日期格式和传统日期格式式,其定界符都是一对花括花。花括号内年、月、日,其定界符都是一对花括花。
6、花括号内年、月、日间用斜杠(间用斜杠(/)、连字号()、连字号()、句点()、句点(.)或空格做)或空格做分隔符分隔。日期型数据用分隔符分隔。日期型数据用8 8个字节表示。个字节表示。严格日期格式严格日期格式 书写格式固定:书写格式固定:yyyy-mm-ddyyyy-mm-dd,定界符内第一,定界符内第一个字符必须是脱字符个字符必须是脱字符,年份必须,年份必须4 4位,书写不受任位,书写不受任何环境设置命令影响,能表达一个确切的日期。何环境设置命令影响,能表达一个确切的日期。如:如:2019-08-082019-08-08第二章 Visual FoxPro程序设计基础传统日期格式传统日期格式
7、要根据系统设置来书写,受要根据系统设置来书写,受SET DATE TOSET DATE TO和和SET CENTURY TOSET CENTURY TO等环境设置命令影响,书写等环境设置命令影响,书写时月、日各为时月、日各为2 2位,年份可以是位,年份可以是2 2位也可以是位也可以是4 4位。位。如:如:01/25/9801/25/98、01/25/201901/25/2019VFPVFP默认下不可以使用,只能在默认下不可以使用,只能在 SET STRICTDATE SET STRICTDATE TO 0 TO 0 时才可以使用。时才可以使用。第二章 Visual FoxPro程序设计基础影响
8、日期格式的相关设置命令有:影响日期格式的相关设置命令有:SET MARK TO SET MARK TO 日期分隔符日期分隔符 命令功能命令功能:用于指定显示日期值时所用的分隔符。:用于指定显示日期值时所用的分隔符。若未指定,表示恢复系统默认分隔符若未指定,表示恢复系统默认分隔符”/“)/“)SET DATE TO AMERICAN|ANSI|JAPAN|SET DATE TO AMERICAN|ANSI|JAPAN|命令功能命令功能:用于设置日期显示的格式。该格式也:用于设置日期显示的格式。该格式也决定系统如何解释一个传统格式的日期常量。决定系统如何解释一个传统格式的日期常量。第二章 Visu
9、al FoxPro程序设计基础SET CENTURY ON|OFF|TO SET CENTURY ON|OFF|TO 世纪值世纪值 ROLLOVER ROLLOVER 年份参照值年份参照值 命令功能命令功能:用于决定如何显示或解释一个日期数据:用于决定如何显示或解释一个日期数据的年份。的年份。ONON显示世纪,即用显示世纪,即用4 4位数字表示年份。位数字表示年份。OFFOFF不显示世纪,即用不显示世纪,即用2 2位数字表示年份。该项是位数字表示年份。该项是系统默认设置。系统默认设置。SET STRICTDATE TO 0|1|2SET STRICTDATE TO 0|1|2命令功能命令功能:
10、用于设置是否对日期格式进行检查。:用于设置是否对日期格式进行检查。0 0:不进行严格的日期格式检查。:不进行严格的日期格式检查。1 1:进行严格的日期格式检查。为系统默认设置。:进行严格的日期格式检查。为系统默认设置。2 2:进行严格的日期格式检查,并且对:进行严格的日期格式检查,并且对CTODCTOD和和CTOTCTOT函数的格式也有效。函数的格式也有效。第二章 Visual FoxPro程序设计基础 20192019年年9 9月份考试试题:月份考试试题:(1515)要想将日期型或日期时间型数据中的年)要想将日期型或日期时间型数据中的年份用份用4 4位数字显示,应当使用设置命令位数字显示,应
11、当使用设置命令 。A A)SET CENTURY ON BSET CENTURY ON B)SET CENTURY SET CENTURY OFF COFF C)SET CENTURY TO 4 DSET CENTURY TO 4 D)SET SET CENTURY OF 4CENTURY OF 4第二章 Visual FoxPro程序设计基础5 5日期时间型常量日期时间型常量 与日期一样有传统及严格两种书写格式,与日期一样有传统及严格两种书写格式,主要在日期书写上有区别,与日期型一样,也主要在日期书写上有区别,与日期型一样,也受上面的设置命令控制。严格日期时间型是我受上面的设置命令控制。严格
12、日期时间型是我们常用的书写方式,格式如下:们常用的书写方式,格式如下:yyyy-mm-dd hh:mm:ss a|pyyyy-mm-dd hh:mm:ss a|p如:如:2019-08-08,11:36:582019-08-08,11:36:58 日期时间型数据用日期时间型数据用8 8个字节存储。个字节存储。第二章 Visual FoxPro程序设计基础6 6逻辑型常量逻辑型常量 只有两个值:真(只有两个值:真(.T.T.)、假()、假(.F.F.)。)。书写时大小写的书写时大小写的 .T.T.或或 .Y.Y.表示真,大小写表示真,大小写的的 .F.F.或或 .N.N.表示假。这里的表示假。这
13、里的“.”.”是定界是定界符,必不可少。符,必不可少。逻辑型数据只占用一个字节。逻辑型数据只占用一个字节。第二章 Visual FoxPro程序设计基础2.1.2 2.1.2 变量变量 变量值是能够随时更改的。变量值是能够随时更改的。每个变量有一个变每个变量有一个变量名,量名,代码通过变量名来访问变量的值代码通过变量名来访问变量的值。VFVF变量分为变量分为字段变量和内存变量两大类。表中的字段名就是变量,字段变量和内存变量两大类。表中的字段名就是变量,称为字段变量。称为字段变量。内存变量是内存中的一个存储区域,变量值就内存变量是内存中的一个存储区域,变量值就是存放在这个区域中的数据,变量类型取
14、决于变量值是存放在这个区域中的数据,变量类型取决于变量值的类型。随着存放数据的变化变量值在变化,类型也的类型。随着存放数据的变化变量值在变化,类型也随之改变。与常量一样也有相应的随之改变。与常量一样也有相应的6 6种类型。种类型。第二章 Visual FoxPro程序设计基础1 1简单的内存变量简单的内存变量 变量都有名,通过变量名来使用变量中存放的数变量都有名,通过变量名来使用变量中存放的数据(访问变量值)。据(访问变量值)。向简单内存变量赋值不用先定义,赋值时变量不向简单内存变量赋值不用先定义,赋值时变量不存在将自动产生。有两种赋值格式:存在将自动产生。有两种赋值格式:=STORE STO
15、RE TO TO 等号一次给一个变量赋值。等号一次给一个变量赋值。STORE STORE 命令可以同时给多命令可以同时给多个变量个变量赋相同值赋相同值,变量名间用逗号隔开。,变量名间用逗号隔开。第二章 Visual FoxPro程序设计基础l 一个变量在使用前并不需要特别的定义或声明,当给一个变量在使用前并不需要特别的定义或声明,当给变量赋值而变量不存在时系统会自动建立它。变量赋值而变量不存在时系统会自动建立它。l 可以对内存变量重新赋值来改变其取值和类型。可以对内存变量重新赋值来改变其取值和类型。l 当出现内存变量与字段变量同名时,若直接用变量名当出现内存变量与字段变量同名时,若直接用变量名
16、来访问则系统默认为字段变量,要访问内存变量必须来访问则系统默认为字段变量,要访问内存变量必须在变量名前加上前缀在变量名前加上前缀M.(M.(或或M-)M-)。20192019年年4 4月份考试填空题:月份考试填空题:(7 7)执行命令)执行命令A=2019/4/2A=2019/4/2之后,内存变量之后,内存变量A A的数据类的数据类型是型是 【7 7】型。(数值)型。(数值)第二章 Visual FoxPro程序设计基础2 2数组数组 数组是内存中连续的一片存储区域,它由数组是内存中连续的一片存储区域,它由一系列元素组成,每个元素可通过数组名及相应一系列元素组成,每个元素可通过数组名及相应的下
17、标来访问。每个数组元素相当于一个简单变的下标来访问。每个数组元素相当于一个简单变量,可以给元素分别赋不同类型的值。量,可以给元素分别赋不同类型的值。数组在使用前一般要用数组在使用前一般要用DIMENSIONDIMENSION或或DECLAREDECLARE命令创建,定义是一维还是二维数组。命令创建,定义是一维还是二维数组。数组大小有下标值的上、下限决定。数组大小有下标值的上、下限决定。下限规定为下限规定为1 1。格式:格式:DIMENSION DIMENSION(,),2),DECLARE DECLARE(,)2),数组创建后,系统自动给每个数组元素赋以逻辑假.F.。第二章 Visual Fo
18、xPro程序设计基础 数组及数组元素要注意:数组及数组元素要注意:可以使用简单变量的地方都可使用数组元素;可以使用简单变量的地方都可使用数组元素;赋值语句中使用数组名可以给其全部元素赋值;赋值语句中使用数组名可以给其全部元素赋值;同一环境中数组名不可与简单内存变量同名;同一环境中数组名不可与简单内存变量同名;赋值语句的表达式位置不能出现数组名;赋值语句的表达式位置不能出现数组名;可以用一维数组形式访问二维数组。可以用一维数组形式访问二维数组。第二章 Visual FoxPro程序设计基础2.1.3 2.1.3 内存变量常用命令内存变量常用命令1 1内存变量的赋值内存变量的赋值格式格式1 1:=
19、格式格式2 2:STORE STORE TO TO 功能:计算表达式并将表达式值赋给一个或功能:计算表达式并将表达式值赋给一个或多个内存变量,格式多个内存变量,格式1 1只能给一个变量赋值。只能给一个变量赋值。2 2表达式值的显示表达式值的显示格式格式1 1:?格式格式2 2:?第二章 Visual FoxPro程序设计基础功能:计算表达式表中的各表达式并输出各表达功能:计算表达式表中的各表达式并输出各表达式值。式值。不管有没有指定表达式表,格式不管有没有指定表达式表,格式1 1都会输都会输出一个回车换行符。如果指定了表达式表,各出一个回车换行符。如果指定了表达式表,各表达式值将在下一行的起始
20、处输出。表达式值将在下一行的起始处输出。格式格式2 2不回输出回车换行符,各表达式值不回输出回车换行符,各表达式值在当前行的光标所在处直接输出。在当前行的光标所在处直接输出。第二章 Visual FoxPro程序设计基础3 3内存变量的显示内存变量的显示 格式格式1 1:LIST MEMORY LIKELIST MEMORY LIKETO TO PRINTER|TO FILE PRINTER|TO FILE 格式格式2 2:DISPLAY MEMORY LIKEDISPLAY MEMORY LIKETO PRINTER|TO FILE TO PRINTER|TO FILE 通配符包括通配符包括
21、*和和?,*表示任意多个字符,?表示表示任意多个字符,?表示任意一个字符。注意两种格式的区别。任意一个字符。注意两种格式的区别。第二章 Visual FoxPro程序设计基础4 4内存变量的清除内存变量的清除 格式格式1 1:CLEAR MEMORYCLEAR MEMORY 格式格式2 2:RELEASE RELEASE 格式格式3 3:RELEASE ALL EXTENDEDRELEASE ALL EXTENDED 格式格式4 4:RELEASE ALL LIKE RELEASE ALL LIKE|EXCEPT|EXCEPT 格式格式5 5:CLEAR ALLCLEAR ALL第二章 Vis
22、ual FoxPro程序设计基础功能功能:格式格式1 1表示清除所有内存变量。表示清除所有内存变量。格式格式2 2表示清除指定的内存变量。表示清除指定的内存变量。格式格式3 3表示清除所有的内存变量。在人机会话状态时表示清除所有的内存变量。在人机会话状态时其作用与格式其作用与格式1 1相同。如果出现在程序中,则应该加相同。如果出现在程序中,则应该加上短语上短语ENTENDEDENTENDED,否则不能删除全局内存变量。,否则不能删除全局内存变量。格式格式4 4表示选用表示选用LIKELIKE短语清除与通配符相匹配的内存短语清除与通配符相匹配的内存变量,选用变量,选用EXCEPTEXCEPT短语
23、清除与通配符不相匹配的内存短语清除与通配符不相匹配的内存变量。变量。第二章 Visual FoxPro程序设计基础2.2 2.2 表表 达达 式式 表达式是由常量、变量和函数通过特定的运算表达式是由常量、变量和函数通过特定的运算符连接起来的式了。表达式的形式包括:符连接起来的式了。表达式的形式包括:单一的运算对象(常量、变量或函数)。单一的运算对象(常量、变量或函数)。如:如:23 23 中国中国 (78)(78)由运算符将运算对象连接起来形成的式了。由运算符将运算对象连接起来形成的式了。如:如:45+50 2019-10-01+8045+50 2019-10-01+80 表达式都有值。依据其
24、运算对象及值分为表达式都有值。依据其运算对象及值分为数值数值表达式、字符表达式、日期时间表达式和逻辑表表达式、字符表达式、日期时间表达式和逻辑表达式。大多数逻辑表达式是带比较运算符的关系达式。大多数逻辑表达式是带比较运算符的关系表达式。表达式。第二章 Visual FoxPro程序设计基础2.2.1 2.2.1 数值、字符与日期时间表达式数值、字符与日期时间表达式 1 1数值表达式数值表达式 由算术运算符将数值型数据(数值类的常量、由算术运算符将数值型数据(数值类的常量、变量或函数)连接起来形成,结果仍为数值型。变量或函数)连接起来形成,结果仍为数值型。算术运算符算术运算符 其运算符按优先级别
25、分别是:其运算符按优先级别分别是:()()、*或或、*、%、求余运算求余运算 求余运算求余运算%和取余函数和取余函数MODMOD()的作用相同,结果的正()的作用相同,结果的正负号与除数一致。如果被除数与除数同号,那么运算结负号与除数一致。如果被除数与除数同号,那么运算结果即为两数相除的余数;果即为两数相除的余数;若异号,则运算结果为两数相若异号,则运算结果为两数相除的余数再加上除数的值。除的余数再加上除数的值。第二章 Visual FoxPro程序设计基础2 2字符表达式字符表达式 由字符串运算符将字符型数据(字符类的常由字符串运算符将字符型数据(字符类的常量、变量或函数)连起来形成,结果仍
26、是字符量、变量或函数)连起来形成,结果仍是字符型数据。型数据。运算符只有两个分别是加(运算符只有两个分别是加(+)和减()和减(-)。)。+:前后两个字符串首尾连接形成一个新的字符:前后两个字符串首尾连接形成一个新的字符串。串。-:连接前后两个字符串,并将前字符串的尾部:连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符串尾部。空格移到合并后的新字符串尾部。第二章 Visual FoxPro程序设计基础3 3日期时间表达式日期时间表达式 运算符只有两个分别是加(运算符只有两个分别是加(+)和减()和减(-)。)。书写时格式有一定限制,不能任意组合。详见书写时格式有一定限制,不能任意组
27、合。详见表表2-32-3。20192019年年4 4月份考试试题:月份考试试题:(6 6)表达式)表达式2019-1-3 102019-1-3 10:0 0:00一一2019-2019-10-3 910-3 9:0 0:00的数据类型是的数据类型是【6 6】。第二章 Visual FoxPro程序设计基础2.2.2 2.2.2 关系表达式关系表达式1.1.关系表达式关系表达式 也称简单的逻辑表达式,格式一般为:也称简单的逻辑表达式,格式一般为:2 功能是比较两表达式的大小或前后。功能是比较两表达式的大小或前后。结果是逻辑型。结果是逻辑型。运算符:小于(运算符:小于()、等于()、等于(=)、不
28、)、不等于(等于(或或#或或 !=!=)、小于等于()、小于等于(=)、字符串精确比较()、字符串精确比较(=)、子串包含测试)、子串包含测试($)。)。第二章 Visual FoxPro程序设计基础 运算符运算符=和和$仅适用于字符型数据。其他仅适用于字符型数据。其他运算符适用于任何类型的数据,运算符适用于任何类型的数据,但除了日期型但除了日期型和日期时间型数据、数值型和货币型数据可以和日期时间型数据、数值型和货币型数据可以比较外,其他情况下前后两个运算对象的数据比较外,其他情况下前后两个运算对象的数据类型要一致。类型要一致。1.1.数值型、货币型数据比较数值型、货币型数据比较2.2.日期、
29、日期时间型数据比较日期、日期时间型数据比较3.3.逻辑型数据比较逻辑型数据比较4.4.子串包含测试子串包含测试第二章 Visual FoxPro程序设计基础2.2.设置字符的排序次序设置字符的排序次序 可以在选项设置对话框窗口中的数据可以在选项设置对话框窗口中的数据页中设置,也可以用命令页中设置,也可以用命令 SET COLLATE TO SET COLLATE TO“MACHINE”/”PINYIN”/”STROKE”“MACHINE”/”PINYIN”/”STROKE”。3.3.字符串精确比较与字符串精确比较与EXACTEXACT设置设置 在用双等号运算符比较两个字符串时,在用双等号运算符
30、比较两个字符串时,只有当两个字符串完全相同时,运算结果只有当两个字符串完全相同时,运算结果才是才是.T.T.,否则为,否则为.F.F.。用单等号(用单等号(=)比较两个字符串时,结)比较两个字符串时,结果与果与SET EXACT ON|OFFSET EXACT ON|OFF的设置有关。的设置有关。第二章 Visual FoxPro程序设计基础 ON ON 先在较短字符串的尾部加上若干个空格,先在较短字符串的尾部加上若干个空格,使两个字符串的长度相等,然后再进行精确比使两个字符串的长度相等,然后再进行精确比较。较。OFFOFF默认值默认值 当处于当处于OFFOFF状态时,只要右边字符状态时,只要
31、右边字符串与左边字符串的前面部分内容相匹配,即串与左边字符串的前面部分内容相匹配,即得得.T.T.,即字符串的比较因右面的字符串结束即字符串的比较因右面的字符串结束而终止。而终止。第二章 Visual FoxPro程序设计基础4.4.赋值与相等比较的区别赋值与相等比较的区别 =(是一条命令语句)(是一条命令语句)=2 (是一个比较是否(是一个比较是否相等的关系表达式)相等的关系表达式)第二章 Visual FoxPro程序设计基础2.2.3 2.2.3 逻辑表达式逻辑表达式 由逻辑运算符将逻辑型数据连接起来而形成,其结由逻辑运算符将逻辑型数据连接起来而形成,其结果仍为逻辑型数据。果仍为逻辑型数
32、据。运算符有三个按优先顺序依次是:运算符有三个按优先顺序依次是:.NOT.NOT.或或 !(逻辑非)、(逻辑非)、.AND.AND.(逻辑与)、(逻辑与)、.OR.OR.(逻辑或)。(逻辑或)。2.2.4 2.2.4 运算符优先级运算符优先级 不同类型运算出现在同一表达式中,先执行算术运不同类型运算出现在同一表达式中,先执行算术运算符、字符串运算符和日期时间运算符,其次是关系算符、字符串运算符和日期时间运算符,其次是关系运算符,最后执行逻辑运算符。运算符,最后执行逻辑运算符。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础2.3 2.3 常用函数常用函
33、数 函数是用程序来实现的一种数据运算或转函数是用程序来实现的一种数据运算或转换换。每个函数都有特定的运算或转换功能,都。每个函数都有特定的运算或转换功能,都有一个结果,被称为函数值或返回值。函数通有一个结果,被称为函数值或返回值。函数通常用在表达式中,也可作为一条命令使用,但常用在表达式中,也可作为一条命令使用,但此时系统忽略它的返回值。此时系统忽略它的返回值。格式:函数名格式:函数名(自变量自变量1,1,自变量自变量2,2,自变量自变量3,)3,)常用函数分五类:常用函数分五类:数值函数、字符处理函数、数值函数、字符处理函数、日期类函数、数据类型转换函数、测试函数。日期类函数、数据类型转换函
34、数、测试函数。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础2.3.1 2.3.1 数值函数数值函数 1 1绝对值和符号函数绝对值和符号函数 ABS(ABS()、SIGN(SIGN()2 2求平方根函数求平方根函数 SQRT(SQRT()3 3圆周率函数圆周率函数 PI()PI()4 4求整数函数求整数函数 INT(INT()返回指定返回指定数值表达式的整数部分。数值表达式的整数部分。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础5 5四舍五入函数四舍五入函数 ROUND(ROUND(,)2)若若 2大于等
35、于大于等于0 0,那么它表示的是要保留的小数位,那么它表示的是要保留的小数位数;若小于数;若小于0 0,那么它表示的是整数部分的舍入位数。,那么它表示的是整数部分的舍入位数。6 6求余函数求余函数 MOD(MOD(,)2)7 7求最大值和最小值函数求最大值和最小值函数 MAX(MAX(,)MIN(MIN(,)被除数除数所有表达式的类型必须一致第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础2.3.2 2.3.2 字符函数字符函数 1 1求字符串长度函数求字符串长度函数 LEN(LEN()功能:返回指定字符表达式值的长度,即包含的功能:返回指定字符表达式
36、值的长度,即包含的字符个数。字符个数。函数值为数值型。函数值为数值型。2 2大小写转换函数大小写转换函数 LOWER(LOWER()、UPPER(UPPER()提示:只对字母进行转换,其它字符不变。提示:只对字母进行转换,其它字符不变。3 3空格字符串生成函数空格字符串生成函数 SPACE(SPACE()功能:返回由指定数目的空格组成的字符串。功能:返回由指定数目的空格组成的字符串。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础 4 4删除前后空格函数删除前后空格函数 TRIM(TRIM()返回指定字符表达式值去掉尾部空格后形返回指定字符表达式值去掉
37、尾部空格后形成的字符串。成的字符串。LTRIM(LTRIM()返回指定字符表达式值去掉前导空格后形返回指定字符表达式值去掉前导空格后形成的字符串。成的字符串。ALLTRIM(ALLTRIM()返回指定字符表达式值去掉前导和尾部返回指定字符表达式值去掉前导和尾部空格后形成的字符串。空格后形成的字符串。5 5取子串函数取子串函数 LEFT(LEFT(,)从指定表达式值的左端取一个指定从指定表达式值的左端取一个指定长度的子串作为函数值。长度的子串作为函数值。RIGHT(RIGHT(,)SUBSTR(SUBSTR(,)从指定表达式值的指定起始位置取指定长度的子串作为函数值。从指定表达式值的指定起始位置
38、取指定长度的子串作为函数值。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础6 6计算子串出现次数函数计算子串出现次数函数 OCCURS(OCCURS(,)2)功能:返回第一个字符串在第二个字符串中出现的次数,功能:返回第一个字符串在第二个字符串中出现的次数,函数值为数值型函数值为数值型。若第一个字符串不是第一个字符串。若第一个字符串不是第一个字符串的子串,函数值为的子串,函数值为0 0。7 7求子串位置函数求子串位置函数 AT(AT(,)ATC(ATC(,)功能:功能:AT()AT()函数值为数值型。若函数值为数值型。若1 1是是2 2的子串,则返回
39、的子串,则返回1 1值的首字符在值的首字符在2 2中的位置。若不是子串,返回中的位置。若不是子串,返回0 0。ATCATC()与()与ATAT()功能类似,()功能类似,但在子串比较时不区分字但在子串比较时不区分字母大小写。母大小写。1在2中第几次出现第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础8.8.子串替换函数子串替换函数格式:格式:STUFFSTUFF(1,2)功能:功能:用用 2值替换值替换 1中由中由 和和 指明的一个子串。指明的一个子串。替换和被替换的字符个数不一定相替换和被替换的字符个数不一定相等。如果等。如果 为为0 0,则相当于在
40、,则相当于在 1中由中由 指定的字符前面插入指定的字符前面插入 2。如果。如果 2值是空串,则相当于在值是空串,则相当于在 1中删去由中删去由 和和 指明的子串。指明的子串。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础9.9.字符替换函数字符替换函数 格式:格式:CHRTRAN(CHRTRAN(,2,)3)10.10.字符串匹配函数字符串匹配函数格式:格式:LIKELIKE(,2)功能:比较两个字符串对应位置上的字符,若所有对应功能:比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真,否则返回逻辑假。字符都相匹配,函数返回逻辑真
41、,否则返回逻辑假。1中可以包含通配符中可以包含通配符*和和?。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础2.3.3 2.3.3 日期和时间函数日期和时间函数 1 1系统日期和时间函数系统日期和时间函数 DATE()DATE()(函数值为日期型)(函数值为日期型)TIME()TIME()(函数值为字符型函数值为字符型)DATETIME()DATETIME()(函数值为日期时间型)(函数值为日期时间型)2 2求年份、月份和天数函数求年份、月份和天数函数 YEAR(YEAR(|)、MONTH(MONTH(|)DAY(DAY(|)(函数返回值均为数值型函
42、数返回值均为数值型)3 3时、分和秒函数时、分和秒函数 HOUR(HOUR()、MINUTE(MINUTE()、SEC(SEC()(函数返回值均为数值型函数返回值均为数值型)第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础3.3.4 3.3.4 数据类型转换函数数据类型转换函数 1 1数值转换成字符串数值转换成字符串 STR(STR(,)2 2字符串转换成数值字符串转换成数值 VAL(VAL()功能:功能:将有数字符号(包括正负数、小数点)组成的将有数字符号(包括正负数、小数点)组成的字符型数据转换成相应的数值型数据。字符型数据转换成相应的数值型数据。
43、若字符串内出若字符串内出现非数字字符,那么只转换前面部分;若字符串的首现非数字字符,那么只转换前面部分;若字符串的首字符不是数字符号,则返回数值零,但忽略前导空格。字符不是数字符号,则返回数值零,但忽略前导空格。3 3字符串转换成日期或日期时间字符串转换成日期或日期时间 CTOD(CTOD()CTOT()CTOT()第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础 4 4日期或日期时间转换成字符串日期或日期时间转换成字符串DTOC(DTOC(|,1),1)TTOC(TTOC(,1),1)5 5宏替换函数宏替换函数&.功能替换出字符型变量的内容,即功能替
44、换出字符型变量的内容,即&的值是变量中的值是变量中的字符串。的字符串。功能:替换出字符型变量的内容,即函数值是变量中的功能:替换出字符型变量的内容,即函数值是变量中的字符串。如果该函数与其后的字符无明确分界,则要字符串。如果该函数与其后的字符无明确分界,则要用用“.”.”作函数结束标识。宏替换可以嵌套使用。作函数结束标识。宏替换可以嵌套使用。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础2.3.5 2.3.5 测试函数测试函数 1 1值域测试函数值域测试函数 BETWEEN(BETWEEN(,)H)功能:判断一个表达式的值是否介于另外两个表达式功能:
45、判断一个表达式的值是否介于另外两个表达式的值之间。当的值之间。当T T值大于等于值大于等于L L且小于等于且小于等于H H时,函数值时,函数值为逻辑真,否则函数值为逻辑假。如果为逻辑真,否则函数值为逻辑假。如果L L或或H H有一个是有一个是NULLNULL值,那么函数值也是值,那么函数值也是NULLNULL值。值。该函数的自变量类型可以是数值型、字符型、日期该函数的自变量类型可以是数值型、字符型、日期型、日期时间型、浮点型等。但型、日期时间型、浮点型等。但3 3个自变量的数据类个自变量的数据类型要一致。型要一致。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程
46、序设计基础2 2空值空值(NULL(NULL值值)测试函数测试函数 ISNULL(ISNULL()功能:判断一个表达式的运算结果是否为功能:判断一个表达式的运算结果是否为NULLNULL值,值,若是则返回真,否则返回假。若是则返回真,否则返回假。3 3 空空 值测试函数值测试函数 EMPTY(EMPTY()功能:根据指定表达式的运算结果是否为功能:根据指定表达式的运算结果是否为“空空”值,返回逻辑真或逻辑假。值,返回逻辑真或逻辑假。这里所指的这里所指的“空空”值与值与NULLNULL值是两个不同的概值是两个不同的概念。不同数据类型的念。不同数据类型的“空空”值,有不同的规定。值,有不同的规定。
47、见表见表2.62.6。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础4 4数据类型测试函数数据类型测试函数 VARTYPE(VARTYPE(,)功能:测试功能:测试 的类型,返回一个大写字母,的类型,返回一个大写字母,函数值为字符型函数值为字符型。见表。见表2.72.7。若若 的运算结果是的运算结果是NULLNULL值,则函数根据值,则函数根据 值决定是否返回值决定是否返回 的类型;的类型;如果如果 为为.T.T.,就返回,就返回 的的类型;如果类型;如果 为为.F.F.或缺省,则返或缺省,则返回回X X以表明以表明 的运算结果是的运算结果是NULL
48、NULL。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础5.5.表文件尾测试函数表文件尾测试函数 系统对表中的记录是逐条进行处理的。对系统对表中的记录是逐条进行处理的。对于一个打开的表来说,在于一个打开的表来说,在某一时刻只能处理一某一时刻只能处理一条记录条记录。VFVF为每一个打开的表设置了一个内部为每一个打开的表设置了一个内部使用的记录指针,指向正在被操作的记录,该使用的记录指针,指向正在被操作的记录,该记录称为记录称为当前记录当前记录。记录指针的作用是标识表。记录指针的作用是标识表的当前记录。的当前记录。TOPTOP:首记录。:首记录。BOTT
49、OMBOTTOM:尾记录:尾记录 BOF BOF:在第一个记录之前的文件起始标识。:在第一个记录之前的文件起始标识。EOFEOF:在最后一个记录后面的文件结束标识。:在最后一个记录后面的文件结束标识。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础 使用测试函数能够得到指针的位置。刚刚使用测试函数能够得到指针的位置。刚刚打开表时,记录指针总是指向首记录。打开表时,记录指针总是指向首记录。格式:格式:EOF(EOF(|)若缺省自变量,则测试当前表文件。若缺省自变量,则测试当前表文件。若在指定工作区上没有打开表文件,函数返回若在指定工作区上没有打开表文件,
50、函数返回逻辑假。逻辑假。若表文件中不包含任何记录,函数返若表文件中不包含任何记录,函数返回逻辑真。回逻辑真。第二章第二章 Visual FoxProVisual FoxPro程序设计基础程序设计基础6 6表文件首测试函数表文件首测试函数 BOF(BOF(|)7 7记录号测试函数记录号测试函数 RECNO(RECNO(|)8 8记录个数测试函数记录个数测试函数 RECCOUNT(RECCOUNT(|)9 9条件测试函数条件测试函数 IIF(IIF(,)2)1010记录删除测试函数记录删除测试函数 DELETED(DELETED(|)第二章第二章 Visual FoxProVisual FoxPr