Visual FoxPro的数据类型

上传人:t****d 文档编号:243017089 上传时间:2024-09-13 格式:PPT 页数:64 大小:222.50KB
返回 下载 相关 举报
Visual FoxPro的数据类型_第1页
第1页 / 共64页
Visual FoxPro的数据类型_第2页
第2页 / 共64页
Visual FoxPro的数据类型_第3页
第3页 / 共64页
点击查看更多>>
资源描述
,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,第二章Visual FoxPro的数据类型,【教学目标】,理解并掌握,Visual FoxPro 6.0的数据类型,理解并掌握,Visual FoxPro 6.0的表达式,理解并掌握,Visual FoxPro 6.0的常用函数,1,【教学内容】,数据类型,常量与变量,表达式,常用函数、其它函数,2,【重点和难点】,重点,数据类型概念,常量与变量概念,表达式的概念及类型,运算符的类型及优先级,函数功能及用法,难点,运算符的类型及优先级,3,2.1 数据类型和字段类型,VFP提供了多种数据类型,各种类型的数据可以保存在表、数组、变量以及其他数据容器中。,所有数据都有其所属类型。类型就是对数据的允许取值以及这个值的范围进行的说明。,4,2.2.1 字符型,字符型数据包括普通字符型和二进制字符型两种。,1普通字符型(Character),普通字符型简称字符型。,2二进制字符型(Character Binary),二进制字符型与字符型基本相同,只是在代码页改变时,其值不会随之而改变。,2.2.2,货币型,货币型(,Currency,)用来存储与货币有关的数据。,5,2.2.3,数值型,数值型数据是描述数量的常用数据类型,它包括普通数值型、浮动型、双精度型和整型四种。,1 普通数值(Numeric)型,普通数值型数据简称为数值型。,2浮动(Float)型,浮动型即浮点型。,3双精度(Double)型,双精度型是精度更高的数值类型数据,仅用于表中的数值型字段定义。,4整(Integer)型,整型是一种无小数部分的数值类型数据,它只用于表中数值型字段的定义。,6,2.2.4,逻辑型,逻辑(Logical)型数据描述客观事物的真(.T.)与假(.F.),用来表示逻辑判断的结果,逻辑型数据的长度固定为1位。,2.2.5 日期型,日期(Date)型数据是用来表示日期的数据类型,其缺省格式为:mm/dd/yy。mm代表月份,dd代表日,yyyy代表年份,日期型数据的长度固定为8位。,2.2.6 日期时间型,日期时间型(Date Time)数据是用来表示日期和时间的数据类型,其缺省格式是: mm/dd/yy hh:mm:ss。,7,2.2.7,备注型,备注型数据分为普通备注型和二进制备注型两类,其作用基本相同。,1普通备注(Mome)型,普通备注型简称备注型。,2二进制备注(Memo Binary)型,二进制备注型与备注型相同,但当代码页改变时其值会随之而改变。,8,2.2.8 通用型,通用(,General,)型数据仅用于表中的字段类型定义,它实际上是一种特殊的备注型数据。,9,2.3 Visual FoxPro 6.0中的数据存储 数据容器,这些供数据存储用的常量、变量、数组、字段、记录、对象一律称为数据存储容器,简称为数据容器(,Data Volume,,简写为,dvol,)。,2.3.1,常量,常量(Constant)是在程序或命令执行过程中保持不变的数据,是在命令或程序中被直接引用的实际值。它分为数值型、浮点型、字符型、逻辑型、日期型和日期时间型及用户自创建型7种。,10,1,数值(,Numeric,)型常量,数值型常量可以是实数或整数。 例:3.1415926,2,浮点(,Float,)型常量,浮点型常量是数值型常量的浮点格式,它采用科学计数法表示。,3,字符(,Character,)型常量,字符型常量是用字符型常量的定界符(一对单引号, ,、双引号,“”,、方括号, ,)括起来的汉字或可打印的,ASCII,字符串。例,:,“ABC”,张华,3.15,4,逻辑(,Logical,)型常量,逻辑型常量由表示判断结果为“真”或“假”的符号组成。它只有两个值:,.T.,、,.F.,或,.t.,、,.f.,。,11,5,日期(,Date,)型常量,日期型常量用来表示日期,其规定的书写格式为:,yyyy/mm/dd,。 3/15/1999,4/1/1999 10:00am,6,日期时间(,Date Time,)型常量,日期时间型常量用来表示日期和时间,其规定的书写格式为:,yyyy/mm/dd hh:mm:ss,。,7. 编译时常量:#DEFINE OPERRSTR “数据非法”,此时OPERRSTR为编译时常量,表示“数据非法”,在程序中此常量名不能再作为变量名作用。,8,用户自创建常量,这是在应用程序中由用户自己创建的任意类型的常量,类似于其他高级语言中的符号常量。,12,5.2.2 变量,变量是内存中的一个存储单元的位置,变量名是存储位置的符号标识。通过变量名可以访问该存储单元。,1. 变量的创建,可以使用赋值等命令创建变量,其格式为:,变量名 = 表达式,或者STORE 表达式 TO 变量名列表,例如 A=3.14,STORE 1 TO A,B,C,COUNT TO 人数,FOR nINC = 1 TO 10,? nINC,ENDFOR,13,2. 变量的作用域,变量只在应用程序运行时或创建它的工作区中才存在。,用LOCAL指定的变量为局部变量,用PRIVATE指定的变量为私有变量,用PUBLIC指定的变量为全局(公共)变量,在程序中未用上述命令指定的变量默认为局部变量。,在命令窗口中创建的变量或数组被自动赋予全局属性。,3. 变量的访问,变量可以用变量名来访问,但若此时存在同名的字段变量,则优先访问字段变量。若特指访问内存变量,需在变量名前加前缀,或M符号。,例如:M-A,M.A,M-nINC,14,4、内存变量的显示,命令格式:,LIST | DISPLAY,MEMORY,LIKE ,TO PRINTER PROMPT |TO FILE,功能,:显示当前已定义的内存变量名、作用范围、类型、值,15,说明:,),、LIKE子句表示将选出与通配符(* 、?)相匹配的,内存变量,LIST MEMORY LIKE ?,LIKE,子句项缺省则显示全部内存变量以及其个数、,字节数,),、选项TO PRINTER将屏幕显示内容输出到打印,机;使用 PROMPT 选项则提供是否打印的提示窗口;TO FILE,则将显示内容存入文件。,16,5、内存变量的释放,命令格式,RELEASE, ALLLIKE|EXCEPT,功能,:从内存清除指定的内存变量(释放内存),例,:RELEASE a,b,RELEASEALL,RELEASEALL LIKE a*,RELEASEALL EXCEPT ?b*,17,6、内存变量的保存和恢复,命令格式,SAVE TO, ALLLIKE|,功能,:将所有用户定义的内存变量都写入一个文件中(缺省扩展名是.MEM),例,:SAVE ALL LIKE m* TO myfile,18,VFP 标识符的命名规则,、字段、文件命名规则,、内存变量、函数名命名规则,以,字母,(或汉字)或,下划线,开头;由字母、数字、下划线组,成;至多,128,个字符。,不可与,系统保留字同名。,内存变量使用方法,命令,格式,:,例,:s=“VFP”; w=12.12;,19,命令格式:,STORE,TO,例,:STORE 2*4 TO n1,n2,n3,表达式值的显示命令,命令格式,:?,?,功能,:计算表达式的值,并将其显示在屏幕上。,注,:,),、?符号“”表示左、右任选一个。,),、?换行显示表达式的值,?紧接上一条命令显示结果后显示,20,3.4.1,数值函数,1ABS()函数,格式:,ABS(),功能:,ABS()函数返回指定的数值表达式的绝对值。,2,SIGN,()函数,格式:,SIGN(),功能:,SIGN()函数返回指定数值表达式的符号。,当表达式的结果为正、负和0时,函数值分别为1、-1和0。,21,3,SQRT,()函数,格式:,SQRT(),功能:,SQRT()函数返回数值表达式的平方根。,4,PI,()函数,格式:,PI(),功能:,PI()函数返回数值常量的近似值。,22,5,INT,()函数,格式:,INT(),功能:,INT()函数返回数值表达式的整数部分。,6,CELING,()函数,格式:,CELING(),功能:,CELING()函数返回大于或等于数值表达式的最小整数。,23,7,FLOOR,()函数,格式:,FLOOR(),功能:,FLOOR()函数返回小于或等于数值表达式的最大整数。,8,ROUND,()函数,格式:,ROUND(,),功能:,ROUND()函数返回数据表达式在指定位置四舍五入后的结果。,24,9,MOD,()函数,格式:,MOD(, ),功能:,MOD()函数返回除以两个数相除后的余数。余数的正负号与除数相同。,如果被除数与除数同号,那么函数值就为两数相除的余数。,如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值。,25,10,MAX,()函数,格式:,MAX( ,),功能:,MAX()函数返回数值表达式中的最大值表达式。,11,MIN,()函数,格式:,MIN( ,),功能:,MIN()函数返回数值表达式中的最小值表达式。,26,3.4.2,字符函数,1,LEN,()函数,格式:,LEN(),功能:,LEN()函数返回字符表达式值的长度,函数值为数值型。,2,SPACE,()函数,格式:,SPACE(),功能:,SPACE()函数生成指定空格数的空字符串。,27,3,LTRIM,()函数,格式:,LTRIM(),功能:,LTRIM()函数删除串尾空格字符。,4,ALLTRIM,()函数,格式:,ALLTRIM(),功能:,ALLTRIM ()函数删除首尾空格字符。,28,5,LEFT,()函数,格式:,LEFT(,),功能:,LEFT()函数从字符表达式值的左端取一个指定长度的子串作为函数值。,6,RIGHT,()函数,格式:,RIGHT (,),功能:,RIGHT()函数从字符表达式值的右端取一个指定长度的子串作为函数值。,29,7,SUBSTR,()函数,格式:,SUBSTR(,),功能:,SUBSTR()函数从表达式值的起始位置取一个指定长度的子串作为函数值。,8,OCCURS,()函数,格式:,OCCURS(,),功能:,OCCURS()函数返回第一个字符串在第二个字符串中出现的次数。,30,9AT()函数,格式:,AT(, , ),功能:,AT()函数返回值的首字符在值中的位置。,10STUFF()函数,格式:,STUFF(,),功能:,STUFF()函数用串替换串中由和指明的一个子串。,31,11TRIM()/RTRIM( )函数,格式:,TRIM()/RTRIM),功能:,这两个函数功能相同,都是删除尾部的空格。若字符表达式全由空格组成,则函数返回空串。,12CHRTRAN()函数,格式:,CHRTRAN(,),功能:,在中,将与相匹配的字符串用字符表达式3替换。,32,3.4.3,日期时间函数,1DATE()函数,格式:,DATE(),功能:,DATE()函数返回当前系统日期,函数值为日期型。,2TIME()函数,格式:,TIME (),功能:,TIME()函数以24小时制,hh:mm:ss格式返回当前系统时间,函数值为字符型。,33,3,DATETIME,()函数,格式:,DATETIME(),功能:,DATETIME()函数返回当前系统日期时间,函数值为日期时间型。,4,YEAR,()函数,格式:,YEAR (),功能:,YEAR ()从指定的日期表达式或日期时间表达式中返回年份。,34,5,MONTH,()函数,格式:,MONTH (|),功能:,MONTH ()从指定的日期表达式或日期时间表达式中返回月份。,6,DAY,()函数,格式:,DAY (|),功能:,DAY ()从指定的日期或日期时间表达式中返回月份中的天数。,35,7,HOUR,()函数,格式:,HOUR (),功能:,HOUR()函数从日期时间表达式中返回小时部分(24小时制)。,8,MINUTE,()函数,格式:,MINUTE (),功能:,MINUTE()函数从日期时间表达式中返回分钟部分。,36,9,SEC,()函数,格式:,SEC (),功能:,SEC()函数从日期时间表达式中返回秒数部分。,10,DOW,()函数,格式:,DOW (),功能:,DOW()函数返回日期表达式或日期时间表达式返回该日期是一周的第几天, 17表示星期日星期六。,37,3.4.4,数据类型转换函数,1,STR,()函数,格式:,STR( , , ),功能:,STR()函数将按设定的和转换成字符型数据,函数返回值为字符型。,2,VAL,()函数,格式:,VAL (),功能:,VAL()将数值字符串转换为数值。,38,3,CTOD,()函数,格式:,CTOD (),功能:,CTOD()函数将“mm/dd/yy”格式的串转换成对应的日期值,返回的函数值为日期型。,4,DTOC,()函数,格式:,DTOC (|,1),功能:,DTOC()函数将转换成字符串,函数返回值类型为字符型。,39,5ASC函数,格式:,ASC(cExp),功能:,该函数返回字符型表达式cExp中首字符的ASCII码值。,6CHR函数,格式:,CHR(nExp),功能:,该函数返回由数值型表达式nExp的值转换成相应的ASCII字符。其中,nExp的值必须在0255之间。,40,7UPPER函数,格式:,UPPER(cExp),功能:,该函数将字符型表达式cExp中所有小写字母转换为大写字母。,8LOWER函数,格式:,LOWER(nExp),功能:,该函数将字符型表达式nExp中所有的大写字母转换成小写字母。,41,3.4.5,测试函数,1,BETWEEN,()函数,格式:,BETWEEN(,),功能:,BETWEEN()函数判断一个表达式的值是否在另外两个表达式的值之间。,当值大于等于且小于等于时,函数值为逻辑真(.T.),否则函数值为逻辑假(.F.)。,如果或有一个是NULL值,则函数值也是NULL值。,42,2ISNULL()函数,格式:,ISNULL (),功能:,ISNULL()函数判断一个表达式的运算结果是否为.NULL.值,如果是.NULL.值,则返回逻辑真(.T.),否则逻辑值假(.F.)。,3EMPTY()函数,格式:,EMPTY (),功能:,EMPTY()函数根据表达式的运算结果是否为“空”值,返回逻辑真(.T.)或逻辑假(.F.)。,43,4TYPE()函数,格式:,TYPE (),功能:,TYPE ()函数返回表达式的值的类型,返回值是一个大写字母。,5INLIST()函数,格式:,INLIST (、 ,),功能:,INLIST ()函数判断第一个表达式的值是否与后面表达式值中的某个匹配。当表达式1的值等于后面的表达式其中之一时,函数返回.T.,否则返回.f.。,44,6ISBLANK()函数,格式:,ISBLANK (),功能:,ISBLANK ()函数判断表达式是否为空值,返回值是一个大写字母。当表达式为空字符串,空格或空日期时,函数返回.T.,否则返回.f.。,45,数据类型,“空”值,数据类型,“空”值,数值型,0,双精度型,0,字符型,空串、空格、制表符、回车、换行,日期型,空,货币型,0,日期时间,空,浮点型,0,逻辑型,.F.,整型,0,备注字段,空,表3.7 不同类型数据的“空”值规定,46,3.5 数据库类函数,一、字段处理函数,1FCOUNT()函数,格式:,FCOUNT (nWorkArear/cAlias),功能:,FCOUNT ()函数返回指定工作区中所打开表的字段数目,若指定工作区中没有表被打开,则返回0。,2FIELD()函数,格式:,FIELD(nExp、 ,cAlias),功能:,FIELD ()函数返回指定工作区中指定字段或文件的大小。该函数与LEN()函数不同, LEN()只能返回字符串的长度,FSIZE( )可以返回各种类型字段的大小。,47,1BOF()函数,格式:,BOF (|),功能:,BOF()函数测试当前表文件中的记录指针是否指向文件首,如果是则返回逻辑真(.T.),否则返回逻辑假(.F.)。,2EOF()函数,格式:,EOF ( | ),功能:,测试记录指针是否指向文件尾,如果是返回逻辑真(.T.),否则返回逻辑假(.F.)。,二、记录处理函数,48,3RECNO()函数,格式:,RECNO( | ),功能:,RECNO()函数返回当前表文件中当前记录的记录号。,4FILTER()函数,格式:,FILTER(nWorkArea /cAlias ),功能:,FILTER ()函数返回指定数据表中由SET FILTER命令指定的筛选表达式。,49,5RECCOUNT()函数,格式:,RECCOUNT ( | ),功能:,RECCOUNT()函数返回当前表文件中的记录个数,如果指定工作区上没有打开表文件,函数值为0。,6DELETED()函数,格式:,DELETED ( | ),功能:,DELETED()函数测试指定工作区中打开的表,记录指针所指的当前记录是否有删除标记“*”,如果有则为真,否则为假。,50,7SEEK()函数,格式:,SEEK,(表达式),功能:,SEEK,()函数用于在当前工作区,根据当前主索引,查找与表达式值相匹配的第一条记录,若查找成功,返回.T.,否则返回.F.。,8FOUND()函数,格式:,FOUND,(nWorkArea /cAlias ),功能:,FOUND,()函数用于执行查询命令LOCATE、CONTINUE、FIND或SEEK后,判断查找是否成功,若查找成功,返回.T.,否则返回.F.。,51,1CDX()函数,格式:,CDX,(nExp,cAlias),功能:,CDX,()函数返回指定工作区的第nExp个.CDX文件名。,2ORDER()函数,格式:,ORDER,(,cAlias,1),功能:,返回主控索引文件名(.IDX文件)或索引标识名(.CDX文件),选择第二个参数1,可以获得文件路径。,三、索引函数,52,3TAG()函数,格式:,TAG (CDXc,nExp,cAlias),功能:,该函数返回任一独立索引文件名(.IDX文件)或索引标识名(.CDX文件)。nExp的缺省值为1,所有打开的索引文件按顺序编号为1、2、3,接着就是.CDX文件的索引标识。,53,10IIF()函数,格式:,IIF (,),功能:,IIF()函数测试的值,如果为逻辑真(.T.),函数返回的值。,如果为逻辑假(.F.),函数返回的值。,54,2.5 运算符和表达式,2.5.1 算术表达式,算术型表达式(Arithmetic exp,expN),又称数值表达式。,参加运算的数据和结果都是数值型。允许进行的运算如表2.1。,运算符,表达式功能,实 例,实例结果,*、,乘方(幂),5*2, 43,25, 64,*、/,乘、除,*3, 15/2,6, 7.5,%,取模(取余),10%3, 10%,3,10%3,10%,3,1,2, 2,1,+、,加、减,10+5, 10,13.5+2,15,1.5,55,2.5.2 字符表达式,字符表达式,(Character exp,,,expC),中参加运算的数据都是字符型,而结果因运算符不同可能是字符型,也可能是逻辑型。允许进行的运算如表2.2所示。,表,2.2,字符表达式,运算符,表达式功能,实 例,实例结果,+,字符串并置,计算机+013班,计算机013班,将串尾部的空格移至并置后生成的新串之后,计算机,013班,计算机013班,$,属于运算符,当串1属于串2的子串时为.T.,计算机 $ 交大计算机系,计算机 $ 计算数学系,.T.,.F.,56,2.5.3 日期时间表达式,日期时间表达式,(Date time exp,,,expD),仅允许进行两种运算,如表2.3所示。,表,2.3,日期表达式,运算符,表达式功能,实 例,实例结果,-,求两个日期间差的天数或两个日期时间间差的秒数,?2001/08/20,2000/03/15,?2001/08/20 23:45:30,2001/08/20 10:30 :0 ,523(天),47730(秒),+,对已给日期加上天数得到新日期,对已给日期时间加上秒数得到新日期时间,?2000/03/15+523,?2001/08/20 23:30:30+1800,08/20/01,08/21/01 12:00:30 AM,57,2.5.4 关系表达式,关系运算符的功能用来比较两个同类数据的大小,结果是一个逻辑量。关系表达式允许进行的7种运算如表2.4所示,这7种运算的优先级都相同。,58,运算符,表达式功能,实 例,实例结果,仅数1大于数2时为真,52, 科学 计算机,.T., .F.,仅数1小于数2时为真,52, 科学 =,当数1大于等于数2时为真,5=2,2001/02/08=2001/12/08,.T.,.F.,=,当数1小于等于数2时为真,5=2,2001/02/08=2001/12/08,.F.,.T.,#,!=,当两数不等时为真,.T.#.F., 中国!= 上海,.T., .T.,=,两字符串严格相等,计算机科学系 = 计算机,.F.,表2.4关系表达式,59,在比较运算中应该注意下面几个问题。,(1)日期值的比较、日期时间值的比较,早者的值小。,(2)逻辑值的比较,.T.大于.F.。,(,3,)字符值的比较,对两个字符串从左到右逐个字符进行比较。,(,4,)字符串的相等分为非精确相等和精确相等。,60,2.5.5,逻辑表达式,逻辑运算符的功能用于进行逻辑型数据操作,结果仍是逻辑量。逻辑表达式(,Logical exp,,,expL,)允许进行的,3,种运算如表,2.5,所示。,表,2.5,逻辑表达式,运算符,表达式功能,实 例,实例结果,.NOT.,逻辑非(真变假、假变真),.NOT. .t., .NOT. .f.,.f., .t.,.AND.,逻辑与(真真为真),.t. .AND. .t., .t. .AND. .f.,.t., .f.,.OR.,逻辑或(一真即真),.t. .OR. .f., .f. .OR. .f.,.t., .f.,61,2.5.6,名表达式,名表达式(Name exp,expNa)实际上是将一个字符串赋给一个内存变量或下标变量作为该串的名字,以便用户在后面通过间接引用或宏替换的操作来引用该内存变量或下标变量。,1,间接引用名表达式,格式:,(),2,使用宏替换,格式:,&,62,2.5.7 类、对象表达式,类和对象表达式,(Class and object Exp,,,expCo),用来描述对象与类的关系,属性、事件和方法与对象的从属关系,子类调用父类等。运算符有两个,如表2.6所示。,运算符,表达式功能,实 例,.,点运算符。确定对象与类的关系及属性、事件、方法与对象的从属关系,Form.Label1.Caption= 姓名,THISFORM.COMMAND GROUP1.COMMAND1.ENABLED=.T.,作用域运算符。用于在子类中调用父类。,THISFORM.COMMAND GROUP1.COMMAND2:Click,表2.6类和对象表达式,63,2.5.8,表达式的优先级,(1)同类型表达式,按上述的类型内各种运算符的优先级确定运算次序。,(2)不同类型的混合表达式,优先级从高到低依次为算术运算符、字符运算符、关系运算符、逻辑运算符。,(3)两表达式的优先级相同时,表达式按自左向右的次序执行。,(4)表达式中可以使用圆括号改变优先级的次序,圆括号可嵌套。,64,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!