专升本辅导第2章数据和表达式.ppt
本章要点本章要点&数据类型数据类型&常量与变量常量与变量&运算符与表达式运算符与表达式&常用函数常用函数第第2 2章章 数据与数据类型数据与数据类型2.1 2.1 数据类型数据类型数据类型数据类型缩写缩写说明说明数据宽度数据宽度数值型数值型N N整数或小数整数或小数在在内内存存中中占占8 8个个字字节节,在在表表中中占占1-201-20个字节个字节浮点型浮点型F F整数或小数整数或小数在在内内存存中中占占8 8个个字字节节,在在表表中中占占120120个字节个字节双精度型双精度型B B双精度数值双精度数值8 8个字节个字节整型整型I I整型值整型值4 4个字节个字节货币型货币型Y Y货币单位货币单位8 8个字节个字节数据类型数据类型2.1 2.1 数据类型数据类型数据类型数据类型缩写缩写说明说明数据宽度数据宽度字符型字符型C C任意文本任意文本每每个个字字符符占占用用一一个个字字节节,最最大大为为254254个字符个字符日期型日期型D D年、月、日年、月、日8 8个字节个字节日期时间型日期时间型T T年年、月月、日日、时、分、秒时、分、秒8 8个字节个字节逻辑型逻辑型L L真或假真或假1 1个字节个字节备注型备注型M M不不定定长长的的字字符符、数值或文本数值或文本4 4个字节个字节通用型通用型G GOLEOLE对对象象链链接接与与嵌入嵌入4 4个字节个字节数据类型数据类型2.2.1 2.2.1 常量常量1 1、数值型常量、数值型常量 数数值值型型常常量量即即常常数数,用用来来表表示示一一个个数数量量的的大大小小,由由数数字字0909、小小数数点点和和正正负负号号构构成成。如如:2525、25.4525.45、-6.78-6.78。为为了了表表示示很很大大或或很很小小的数值型常量,也可以使用科学记数法形式书写。的数值型常量,也可以使用科学记数法形式书写。2 2、字符型常量、字符型常量 字字符符型型常常量量也也称称为为字字符符串串,其其表表示示方方法法是是用用半半角角单单引引号号、双双引引号号或或方方括括号号把把字字符符串串扩扩起起来来。注注意意,不不包包含含任任何何字字符符的的字字符符串串()叫空串。空串与包含空格的字符串()叫空串。空串与包含空格的字符串()不同。)不同。2.2 2.2 常量与变量常量与变量3 3逻辑型常量逻辑型常量 逻逻辑辑型型数数据据只只有有逻逻辑辑真真和和逻逻辑辑假假两两个个值值。逻逻辑辑真真的的常常量量表表示示形形式式有有:.T.T、.t.t、.Y.Y.和和.y.y。逻逻辑辑假假的的常常量量表表示示形形式有:式有:.F.F、.f.f.、.N.N.和和.n.n.。2.2 2.2 常量和变量常量和变量4 4、日期型常量、日期型常量 日日期期型型常常量量的的定定界界符符是是一一对对花花括括号号。花花括括号号内内包包括括年年、月月、日日三三部部分分内内容容,各各部部分分内内容容之之间间用用分分隔隔符符分分隔隔。分分隔隔符符可可以以是是斜斜杠杠(/)、连连字字号号(-)(-)、句句点点()或或空空格格,其其中中斜斜杠杠是是系系统统在在显显示示日日期期型型数数据据时时使使用用的的默默认认分分隔隔符符。系系统统默默认认的的日日期期格格式式是是美美国国日日期期格格式式:月月日日年年2.2 2.2 常量和变量常量和变量2.2.2 2.2.2 变量变量 在在程程序序运运行行过过程程中中不不断断变变化化的的量量即即是是变变量量。Visual Visual FoxProFoxPro的的变变量量分分为为字字段段变变量量和和内内存存变变量量两两大大类类。表表中中的的字字段段称称为为字字段段名名变变量量。内内存存变变量量是是内内存存中中的的一一个个存存储储区区域域,变变量量值值就就是是存存放放在在这这个个存存储储区区域域里里的的数数据据,变变量量值值的的类类型型包包括括字字符符型型、数数值值型型、货货币币型型、逻逻辑辑型型、日日期期型型和日期时间型。和日期时间型。2.2 2.2 常量和变量常量和变量1 1、字段变量、字段变量 表表的的每每一一个个字字段段都都是是一一个个字字段段变变量量,是是由于对于某一个字段,它的值因记录而异。由于对于某一个字段,它的值因记录而异。字段变量的值取决于当前记录的值。字段变量的值取决于当前记录的值。如如果果当当前前数数据据表表中中有有与与内内存存变变量量同同名名的的字字段段变变量量,字字段段名名变变量量优优先先于于内内存存变变量量。访访问问内内存存变变量量时时,必必须须在在变变量量前前加加上上前前缀缀“M.”M.”或或“M-”M-”,否则系统将访问同名的字段变量。,否则系统将访问同名的字段变量。2 2、内存变量、内存变量 不不管管是是字字段段名名变变量量还还是是内内存存变变量量,变变量名的量名的命名规则命名规则是:是:(1 1)只只能能由由字字母母、汉汉字字、数数字字或或下下划划线线组组成;成;(2 2)以字母、汉字或下划线开始;)以字母、汉字或下划线开始;(3 3)长度不能超过)长度不能超过128128个字符;个字符;(4 4)不能使用)不能使用VFPVFP的保留字作为变量的名。的保留字作为变量的名。内存变量的赋值内存变量的赋值 内存变量的赋值有以下两种形式:内存变量的赋值有以下两种形式:(1 1)命令格式:)命令格式:=命命令令功功能能:将将表表达达式式的的计计算算结结果果送送到到内内存存变量中。变量中。(2 2)命命令令格格式式:STORE STORE TO TO 命命令令功功能能:将将表表达达式式的的值值赋赋给给 中指定的那些内存变量。中指定的那些内存变量。内存变量的显示内存变量的显示(1)(1)输出内存变量的值输出内存变量的值格式格式1:?1:?,格式格式2:?2:?,(2)(2)显示内存变量显示内存变量格格 式式 1 1:LIST LIST MEMORY MEMORY LIKELIKETO TO PRINTER|TO FILEPRINTER|TO FILE格格 式式 2 2:DISPLAY DISPLAY MEMORY MEMORY LIKELIKETO TO PRINTER|TO FILEPRINTER|TO FILE说说明明:通通配配符符“?”代代表表一一个个任任意意字字符符;“*”“*”代代表多个任意字符。表多个任意字符。2.2.3 记录记录是数据表中一组数据项的集合。在同一个数据表中可以有若干条记录,每条记录具有相同的字段个数。在数据表中记录的顺序不影响对记录的操作。(第5章)2.2.4 对象对象是数据存储器的一种。对象是类的实体,对象也是类的变量,它是任何具有属性和方法的信息的集合。对象的建立可以通过设计器和CreateObject()函数来实现。(第12章)2.2.5 内存变量的作用域1.内存变量的作用范围变量的作用域指的是变量在什么范围内是有效或能够被访问的。在Visual FoxPro中,若以变量的作用域来分,内存变量可分为公共变量、私有变量和局部变量三类。(1)公共变量(又称全局变量)在任何模块中都可使用的变量称为公共变量。命令格式:PUBLIC 命令功能:建立公共的内存变量,并为它们赋初值为逻辑假.F.。公共变量一旦建立就一直有效,即使程序运行结束返回到命令窗口也不会消失。只有当执行CLEAR MEMORY、RELEASE、QUIT等命令后,公共变量才被释放。在命令窗口中直接使用的变量也是公共变量。(2)私有变量在程序中直接使用(没有用PUBLIC和LOCAL命令事先声明)的变量都是私有变量。命令格式:PRIVATE 私有变量的作用域是建立它的模块及其下属的各层模块。一旦建立它的模块程序运行结束,这些私有变量将自动清除。(3)局部变量局部变量只能在建立它的模块中使用,不能在上层或下层模块中使用。命令格式:LOCAL 当建立它的模块程序运行结束时,局部变量自动释放。局部变量要先建立后使用。该命令建立指定的局部内存变量,并为它们赋初值逻辑假.F.。由于LOCAL与LOCATE前四个字母相同,所以这条命令的命令动词不能缩写。说明:由于内存变量存放在独立于数据表文件的临时存储单元中,所以,变量和字段可以 同名。字段具有更高的优先级,若要访问变量,变量名前应加上m.或m-前缀来引用它。2.内存变量文件退出VFP后,所有的内存变量及其值将全部丢失。再次进入Visual FoxPro时,这些内存变量均不能再使用。在磁盘上建立专门存放内存变量的文件了长期保存某些内存变量,这种文件就是内存变量文件,扩展名为“.mem”。内存变量的清除内存变量的清除命令格式命令格式1 1:CLEAR MEMORYCLEAR MEMORY命令功能:清除所有内存变量。命令功能:清除所有内存变量。命令格式命令格式2 2:RELEASE ALL EXTENDEDRELEASE ALL EXTENDED命命令令功功能能:清清除除所所有有的的内内存存变变量量。在在人人机机会话状态其作用同命令格式会话状态其作用同命令格式1 1内存变量存盘内存变量存盘save all to save all to 内存变量文件名内存变量文件名恢复内存变量恢复内存变量Restore from memoRestore from memo 2.3 2.3 运算符与表达式运算符与表达式 2.3.1 运算符 运算符是对数据对象进行加工处理的符号,根据其处理数据对象的数据类型,运算符分为算术运算符、字符串运算符、关系运算符和逻辑运算符四类。表达式是由运算对象和运算符号组成的式子,它包括常量、变量、函数和各种运算符号。表达式根据进行运算的数据类型分为算术表达式、字符型表达式、关系型表达式、逻辑型表达式和日期表达式。2.3.2 算术表达式 算术表达式又称数值表达式,其运算对象和运算结果均为数值型数据。数值运算符的功能及运算优先顺序,如表2-2所示。表中运算符按运算优先级别从高到低顺序排列。操作数必须是数值,结果也是数值。运算符及优先次序:(),*或,*、/、%,+、-算术运算符2.3.3 2.3.3 字符表达式字符表达式字符表达式是将两个字符串连接生成一个字符串。字符表达式是将两个字符串连接生成一个字符串。运算符:运算符:+:将两个字符串连接成一个新的字符串。:将两个字符串连接成一个新的字符串。-:将两个字符串连接成一个字符串,并将前字符串尾部的空格:将两个字符串连接成一个字符串,并将前字符串尾部的空格移到合并后的新字符串的尾部。移到合并后的新字符串的尾部。运算符功能表达式举例运算结果+串1+串2:两串顺序相连接12 +5612 56-串1-串2:串1尾空格移到串2尾后再顺序相连接12 -561256$串1$串2:串1是否为串2子串 (子串匹配)1234$a123451234$34512.T.F.2.3.4 2.3.4 日日期期时时间间表表达达式式:只只有有两两种种运运算算,一一种种是是两两个个日日期期时时间间相相减减,结结果果为为相相差差的的天天数数或或秒秒数数;另另一一种种是是一一个个日日期期加加减减一一个个数值,结果为新的日期时间。数值,结果为新的日期时间。2.3.5 2.3.5 关系表达式:关系表达式:对两个式子进行比较运算,结果为逻辑值。对两个式子进行比较运算,结果为逻辑值。运算符运算符说明说明运算符运算符说明说明小于小于大于大于=大于等于大于等于=等于等于=恒恒等于等于、#、!=不等于不等于$子子字符串查找字符串查找说明:说明:(1 1)关系运算符的优先级别相同。)关系运算符的优先级别相同。(2 2)数值型和货币型数据按值的大小比较;日期和时间型数据越)数值型和货币型数据按值的大小比较;日期和时间型数据越晚值越大;逻辑型数据晚值越大;逻辑型数据.T.T.大于大于.F.F.。(3 3)字符串比较根据排序序列的设置比较大小;字符串比较根据排序序列的设置比较大小;(4 4)精确比较与不精确比较设置命令精确比较与不精确比较设置命令SET EXACT ON|OFFSET EXACT ON|OFF。运算符功 能表 达 式 举 例结果小于15大于A 1.T.=等于2+4=3*5.F.、#、!=不等于5 -10.T.=小于或等于abc=大于或等于10-10-02=10/01/02.T.=字符串恒同abc=abcabc.F.在Visual FoxPro系统中,字符型数据的比较相对复杂,默认规则为:(1)单个字符 单个字符的比较是以字符ASCII码的大小,作为字符的“大小”,也就是先后顺序;(2)字符串 两个字符串进行比较的基本原则是从左到右逐个字符进行比较,但因系统相关设置状态不同,比较的结果与预期的不完全相同。相等比较:用运算符进行两串比较时,或者到达右端串的末尾字符为止(当SET EXACT OFF时),或者当到达两串的末端为止(当SET EXACT ON时),以判断两串是否相等;恒同比较:用运算符=进行两串的恒同比较时,不论SET EXACT的设置如何,只有当两串长度相同,字符相同,排列一致时才成立;大小比较:用运算符进行两串比较时,比较到第个不相同字符为止,否则,长度较长的串较“大”;其他比较:除上述运算符之外的其他运算符、=的比较,均可看作是两个运算符以逻辑“或”的关系构成的复合运算;(3)汉字 系统默认按汉字的拼音排列汉字的顺序,也就是以汉字的拼音顺序比较“大小”,因此,汉字比较实质上是以字母的顺序进行比较;但Visual FoxPro系统可以设置汉字按笔画排列顺序,因而,汉字的“大小”就决定其笔画数的多少。用菜单设置汉字排列顺序方式的操作步骤为:单击【工具】|【选项】命令,将打开“选项”对话框中,在“数据”选项卡的“排序序列”下拉列表框中选择“Stroke”项并确定,系统将按汉字的笔画数进行汉字的排序、比较运算。2.3.6 2.3.6 逻辑表达式逻辑表达式运算符有:运算符有:.NOT.NOT.(或!)、或!)、.AND.AND.、.OR.OR.运算规则:运算规则:X XY YX AND YX AND YX OR YX OR YNOT XNOT X.T.T.T.T.T.T.T.T.F.F.T.T.F.F.F.F.T.T.F.F.F.F.T.T.F.F.T.T.T.T.F.F.F.F.F.F.F.F.T.T.2.3.7 2.3.7 表达式的表达式的优优先先级级算算术术运运算算符符、字字符符串串运运算算符符和和日日期期时时间间运运算符、关系运算符、算符、关系运算符、逻辑逻辑运算符。运算符。运算符 功 能优先级别()圆括号最高|最低.NOT.或!逻辑非.AND.逻辑与.OR.逻辑或1 1、函数的要素、函数的要素 函数有函数名、参数和函数值函数有函数名、参数和函数值3 3个要素。个要素。2 2、函数的类型、函数的类型 函数类型就是函数值的类型。函数类型就是函数值的类型。3 3、常用函数、常用函数(1 1)数数值值函函数数:ABSABS()、SIGNSIGN()、SQRTSQRT()、PIPI()、INTINT()、CEILINGCEILING()、FLOORFLOOR()、()、ROUNDROUND()、()、MODMOD()、()、MAXMAX()、()、MINMIN()()(2 2)字字符符函函数数:LENLEN()、LOWERLOWER()、UPPERUPPER()、SPACESPACE()、TRIMTRIM()、LTRIMLTRIM()、ALLTRIMALLTRIM()、LEFTLEFT()、RIGHTRIGHT()、SUBSTRSUBSTR()、OCCURSOCCURS()、ATAT()、ATCATC()、()、STUFFSTUFF()、()、CHRTRANCHRTRAN()、()、LIKELIKE()()(3 3)日日期期时时间间函函数数:DATEDATE()、TIMETIME()、DATETIMEDATETIME()、YEARYEAR()、MONTHMONTH()、DAYDAY()、()、HOURHOUR()、()、MINUTEMINUTE()、()、SECSEC()()(4 4)数数据据类类型型转转换换函函数数:STRSTR()、VALVAL()、CTODCTOD()、CTOTCTOT()、DTOCDTOC()、TTOCTTOC()、()、&(5 5)测测试试函函数数:BETWEENBETWEEN()、ISNULLISNULL()、EMPTYEMPTY()、VARTYPEVARTYPE()、EOFEOF()、BOFBOF()、()、RECNORECNO()、()、RECCOUNTRECCOUNT()、()、IIFIIF()、()、2.4 2.4 常用函数常用函数2.4 2.4 常用函数常用函数Visual FoxPro系统中,函数是一段程序代码,用来进行一些特定的运算或操作,支持和完善命令的功能,帮助用户完成各种操作与管理。Visual FoxPro系统有数百种不同函数,按函数提供方式,可分为系统(标准)函数和用户自定义函函数,按函数运算、处理对象和结果的数据类型,可分为数值型函数、字符型函数、逻辑型函数、日期时间型函数、数据转换函数等,按函数的功能和特点,可分为数据处理函数、数据库操作函数、文件管理函数、键盘和鼠标处理函数、输出函数、窗口界面操作函数、程序设计函数、数据库环境函数、网络操作函数、系统信息函数动态数据操作函数等。Visual FoxPro的函数由函数名与自变量两部分组成。标准函数是Visual FoxPro系统提供的系统函数,其函数名是Visual FoxPro保留字,自定义函数是用户自已定义的函数,函数名用户指定;自变量必须用圆括号对括起来,如有多个自变量,各自变量以逗号分隔;有些函数可省略自变量,或不需自变量,但也必须保留括号;自变量数据类型由函数的定义确定,数据形式可以是常量、变量、函数或表达式等。函数是一类数据项,除个别(如宏替换)函数外,函数都不能像命令一样单独使用,只能作为命令的一部分进行操作运算。2.4.1 数值函数 数值函数用于数值运算,其自变量与函数都是数值型数据。1 1取绝对值函数取绝对值函数ABS()ABS()【格式】ABS()【功能】计算nExp的值,并返回该值的绝对值。2 2指数函数指数函数EXP()EXP()【格式】EXP()【功能】求以e为底、nExp值为指数的幂,即返回ex的值。3 3取整函数取整函数INT()INT()【格式】INT()【功能】计算nExp的值,返回该值的整数部分。4.4.上界函数上界函数CEILING()CEILING()【格式】CEILING()【功能】计算nExp的值,返回一个大于或等于该值的最小整数。5 5下界函数下界函数FLOOR()FLOOR()【格式】FLOOR()【功能】计算nExp的值,返回一个小于或等于该值的最大整数。6 6自然对数函数自然对数函数LOG()LOG()【格式】LOG()【功能】求nExp的自然对数(以e为底)。nExp的值必须为正数。7 7常用对数函数常用对数函数 【格式】LOG10()【功能】求nExp的常用对数(以10为底)。nExp的值必须为正数。8 8平方根函数平方根函数SQRT()SQRT()【格式】SQRT()【功能】求非负nExp的平方根。9 9最大值函数最大值函数MAX()MAX()和最小值函数和最小值函数MIN()MIN()【格式】MAX(,.)MIN(,.)【功能】返回数值表达式中的最大值MAX()和最小值MIN()。1010求余数函数求余数函数MOD()MOD()【格式】MOD(,)【功能】返回nExp1除以nExp2的余数。余数的小数位数与nExp1相同,符号与nExp2相同。同号时,下取整之后的余数;异号时,上取整之后的不够的差值。1111四舍五入函数四舍五入函数ROUND()ROUND()【格式】ROUND(,)【功能】返回nExp1四舍五入的值,nExp2表示保留的小数位数。1212函数函数PI()PI()【格式】PI()【功能】返回常量的近似值 1313正弦函数正弦函数SIN(SIN()【格式】SIN()【功能】返回nExp的正弦值。nExp以弧度为单位,函数值域为-1,1。14.14.余弦函数余弦函数COS()COS()【格式】COS()【功能】返回nExp的余弦值。nExp以弧度为单位,函数的值域为-1,1。1515正切函数正切函数TAN()TAN()【格式】TAN()【功能】返回nExp的正切值。nExp以弧度为单位,其值为/2或-/2时,系统返回一个绝对值很大的数。1616反正弦函数反正弦函数ASIN()ASIN()【格式】ASIN()【功能】返回nExp的反正弦值。自变量值必须在-1,1内,函数值为弧度,且值域为-/2,/2。1717反余弦函数反余弦函数ACOS()ACOS()【格式】ACOS()【功能】返回nExp的反余弦值。自变量的值必须在-1,1内,函数值为弧度,值域为-/2,/2。1818反正切函数反正切函数ATAN()ATAN()【格式】ATAN()【功能】返回nExp的反正切值。函数值为弧度,值域为(-/2,/2)。2.4.2 字符函数 字符函数是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据。函数中涉及的字符型数据项,均以cExp表示。1 1子串位置函数子串位置函数 【格式】AT(,)【功能】返回串cExp1在串cExp2中的起始位置。函数值为整数。如果串cExp2不包含串cExp1,函数返回值为零。2 2取左子串函数取左子串函数LEFT()LEFT()【格式】LEFT(,)【功能】返回从cExp串中第一个字符开始,截取nExp个字符的子串。3取右子串函数取右子串函数RIGHT()RIGHT()【格式】RIGHT(,)【功能】返回从cExp串中右边第一个字符开始,截取nExp个字符的子串。有关说明同LEFT()函数。4.4.取子串函数取子串函数SUBSTR()SUBSTR()【格式】SUBSTR(,)【功能】返回从串cExp中第nExp1个字符开始,截取nExp2个字符的子串。5 5字符串长度函数字符串长度函数LEN()LEN()【格式】LEN()【功能】返回cExp串的字符数(长度)。函数值为N型。6 6删除字符串前导空格函数删除字符串前导空格函数LTRIM()LTRIM()【格式】LTRIM()【功能】删除cExp串的前导空格字符。7 7删除字符串尾部空格函数删除字符串尾部空格函数RTRIM()|TRIM()RTRIM()|TRIM()【格式】RTRIM|TRIM()【功能】删除cExp串尾部空格字符。8 8删除字符串首、尾部空格函数删除字符串首、尾部空格函数allTRIMallTRIM()()【格式】ALLTRIM()【功能】删除cExp串首、尾部空格字符。9 9字符串替换函数字符串替换函数STUFF()STUFF()【格 式】STUFF(,)【功能】从nExp1指定位置开始,用cExp2串替换 cExp1串中nExp2个字符。1010字符复制函数字符复制函数 REPLICATE()REPLICATE()【格式】REPLICATE(,)【功能】返回将cExp串重复nExp次的字符串。1111定义输出格式函数定义输出格式函数 TRANSFORM()TRANSFORM()【格式】TRANSFORM(,)【功能】按格式描述式cExp指定的格式,输出任意表达式eExp的值。1212大小写转换函数大小写转换函数LOWER()LOWER()和和UPPER()UPPER()【格式】LOWER()UPPER()【功能】LOWER()将cExp串中字母全部变成小写字母,UPPER()将cExp串中字母全部变成大写字母,其它字符不变。1313宏替换函数宏替换函数&【格式】&.【功能】替换出字符型变量cVar中字符。14.14.空格函数空格函数SPACE()SPACE()【格式】SPACE()【功能】返回一个包含nExp个空格的字符串。2.4.3 日期和时间函数 日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式dExp或日期时间型表达式tExp。1 1系统日期函数系统日期函数DATE()DATE()【格式】DATE()【功能】返回当前系统日期,此日期由Windows系统设置。函数值为D型。2 2系统时间函数系统时间函数TIME()TIME()【格式】TIME()【功能】返回当前系统时间,时间显示格式为hh:mm:ss。若选择了nExp,则不管为何值,返回的系统时间还包括秒的小数部分,精确至小数点后两位。函数值为C型。3 3日期函数日期函数DAY()DAY()【格式】DAY()【功能】返回dExp式中的天数。函数值为N型 4.4.星期函数星期函数DOW()DOW()、CDOW()CDOW()【格式】DOW()CDOW()【功能】DOW()函数返回dExp式中星期的数值,用17表示星期日星期六。函数值为N型。CDOW()函数返回dExp式中星期的英文名称。函数值为C型。5 5月份函数月份函数MONTH()MONTH()、CMONTH()CMONTH()【格式】MONTH()CMONTH()【功能】MONTH()函数返回dExp式中月份数。函数值为N型。CMONTH()函数则返回月份的英文名。函数值为C型。6 6年份函数年份函数YEAR()YEAR()【格式】YEAR()【功能】函数返回dExp式中年份值。函数值为N型。2.4.4 转换函数 在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。Visual FoxPro系统提供了若干个转换函数,较好地解决了数据类型转换的问题。1 1ASCIIASCII码函数码函数ASC()ASC()【格式】ASC()【功能】返回cExp串首字符的ASCII码值。函数值为N型。2 2ASCIIASCII字符函数字符函数CHR()CHR()【格式】CHR()【功能】返回以nExp值为ASCII码的ASCII字符。函数值为C型。3 3字符日期型转换函数字符日期型转换函数CTOD()CTOD()【格式】CTOD()【功能】把“/”格式的cExp串转换成对应日期值。函数值为D型。4.4.日期字符型转换函数日期字符型转换函数DTOC()DTOC()【格式】DTOC(,1)【功能】把日期dExp转换成相应的字符串。函数值为C型。5 5数值字符型转换函数数值字符型转换函数STR()STR()【格式】STR(,)【功能】将nExp1的数值转换成字符串形式。函数值为C型。6 6字符数值型转换函数字符数值型转换函数VAL()VAL()【格式】VAL()【功能】将cExp串中数字转换成对应数值,转换结果取两位小数。函数值为N型。2.4.5 测试函数 在数据库应用的操作过程中,用户需要了解数据对象的类型、状态等属性,Visual FoxPro提供了相关的测试函数,使用户能够准确地获取操作对象的相关属性。1 1数据类型函数数据类型函数TYPE()TYPE()【格式】TYPE()【功能】返回cExp 串表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。C:字符型,D:日期型,N:数值型,L:逻辑型,M:备注型,G:通用型,U:未定义。2 2文件查找函数文件查找函数FILEFILE()()【格式】FILE()【功能】根据cExp串中指定路径查找文件,如未指定路径,则在默认目录中查找。文件存在,返回逻辑真(.T.)值,否则为逻辑假(.F.)值。3 3条件测试函数条件测试函数IIF()IIF()【格式】IIF(,)【功能】逻辑表达式lExp值为真(.T.),返回表达式eExp1的值,否则返回表达式eExp2的值。eExp1和eExp2可以是任意数据类型的表达式。4.4.表结束标志测试函数表结束标志测试函数EOF()EOF()【格式】EOF(|)【功能】测试记录指针是否移到表结束处。如果记录指针指向表中尾记录之后,函数返回真(.T.),否则为假(.F.)。5 5表起始标识测试函数表起始标识测试函数BOF()BOF()【格式】BOF(|)【功能】测试记录指针是否移到表起始处。如果记录指针指向表中首记录前面,函数返回真(.T.),否则为假(.F.)。工作区说明见EOF()函数。6 6当前记录号函数当前记录号函数RECNO()RECNO()【格式】RECNO(|)【功能】返回指定工作区中表的当前记录的记录号。对于空表返 回值为1。7 7当前记录逻辑删除标志测试函数当前记录逻辑删除标志测试函数DELETED()DELETED()【格式】DELETED(|)【功能】测试指定工作区中表的当前记录是否被逻辑删除。如果当前记有逻辑删除标记,函数返回真(.T.),否则为假(.F.)。8 8记录数函数记录数函数RECCOUNT()RECCOUNT()【格式】RECCOUNT(|)【功能】返回指定工作区中表的记录个数。如果工作区中没有打 开表则返回0。9 9记录大小测试函数记录大小测试函数RECSIZE()RECSIZE()【格式】RECSIZE(|)【功能】返回指定工作区中表的记录总长度。如果工作区中没有打开表则返回0。1010屏幕列坐标和行坐标函数屏幕列坐标和行坐标函数 COL()COL()、ROW()ROW()【格式】COL()ROW()【功能】COL()返回光标的列坐标值,ROW()返回光标的行坐标值。1111打打印印机机列列坐坐标标和和行行坐坐标标函函数数PCOL(PCOL(),PROW(PROW()【格式】PCOL()PROW()【功能】返回打印机打印头所处位置的列坐标和行坐标。2.5 数组Visual FoxPro和和其其他他高高级级语语言言一一样样也也具具有有数数组组功功能能。数数组组是是内内存存变变量量,不不过过它它与与我我们们前前面面学学过过的的内存变量有差别。比如:内存变量有差别。比如:X=123.4Y=ABCDE其其中中X,Y都都是是内内存存变变量量,它它们们之之间间是是相相互互独独立立的的没没有有从从属属或或一一定定顺顺序序相相邻邻的的关关系系,常常称称之之为为简简单单变变量量。数数组组是是一一组组变变量量的的集集合合,也也就就是是说说一一个个数数组组含含有有若若干干个个变变量量,这这些些变变量量之之间间有有顺顺序序的的联联系系,并并同同属属于于一一个个数数组组。在在VFP中中,把把名名字字相相同同、用用下标区分的内存变量称为数组。下标区分的内存变量称为数组。(1)同同一一数数组组内内的的各各个个元元素素可可以以具具有有不不同同的的类类型型,每每个个元素的具体类型,由所赋值的类型而定。元素的具体类型,由所赋值的类型而定。(2)数数组组变变量量可可以以不不带带下下标标使使用用,但但这这时时它它在在赋赋值值语语句句的的左左边边和和右右边边出出现现的的定定义义是是不不同同的的,如如果果它它出出现现在在赋赋值值语语句句的的右右边边,表表示示是是该该数数组组第第一一个个元元素素;如如果果它它出出现现在在赋赋值值语句的左边,表示是该数组所有元素。语句的左边,表示是该数组所有元素。(3)数数组组和和数数据据表表记记录录之之间间可可相相互互传传递递数数据据,即即数数据据表表中中数数据据可可以以传传送送给给数数组组,反反过过来来数数组组数数据据也也可可以以传传送送给给数数据表中的数据。据表中的数据。2.5.1 数组的定义使用数组之前要先定义。使用数组之前要先定义。为为了了避避免免混混淆淆,内内存存变变量量的的数数组组名名应应与与一一般般内内存存变变量量名名区区别别开开来来。例例如如已已定定义义了了数数组组A和和B,就就不不能再用他们作一般的变量名使用。能再用他们作一般的变量名使用。数数组组名名的的命命名名方方法法和和一一般般的的变变量量名名的的命命令令方方法法相相同。定义数组用如下命令:同。定义数组用如下命令:命令格式:命令格式:DIMENSION 或或Declare(,),(,)命令功能:定义一个或多个内存变量数组。命令功能:定义一个或多个内存变量数组。说明:(1)使使用用DIMENSION命命令令可可以以定定义义一一维维或或二二维维数数组组,并并规规定定每每维维数数组组中中最最多多可可有有3600个个元元素素,当当然然必必须须有有足足够够的的内内存存空空间间来来存存放放这这些些数数组组。不不管管数数组组定定义义多多少少个个可可使使用用的的内存变量,一组内存变量在显示内存时只算一个。内存变量,一组内存变量在显示内存时只算一个。(2)数数组组的的下下标标起起始始值值是是1,数数组组元元素素缺缺省省初初始始值值是是.F.。(3)当当数数组组被被定定义义为为二二维维下下标标时时,它它也也能能以以一一维维下下标标方方式式被被存存取取。这这是是由由于于在在内内存存中中,二二维维数数组组元元素素是是按按行行次次序序排列的。在这种访问过程中,要注意数组元素的存储顺序。排列的。在这种访问过程中,要注意数组元素的存储顺序。(4)数数组组一一经经定定义义,他他们们每每个个元元素素都都可可当当作作一一个个独独立立的的内存变量使用,它具有与内存变量相同的性质。内存变量使用,它具有与内存变量相同的性质。例如:例如:DIMENSION X(3),Y(2,3)该该命命令令定定义义了了一一个个一一维维数数组组X,一一个个二二数数组组Y,X和和Y是是数数组组名名,其其中中一一维维数数组组X含含有有三三个个数数组组元元素素,表示为表示为X(1)、)、X(2)、)、X(3)。)。二维数组二维数组Y含有六个数组元素,表示为:含有六个数组元素,表示为:Y(1,1)、)、Y(1,2)、)、Y(1,3)、)、Y(2,1)、)、Y(2,2)、)、Y(2,3)。)。圆圆括括号号内内的的数数字字称称数数组组元元素素的的下下标标,数数组组元元素素间间用下标区分。用下标区分。