《VFP的数据与运算.ppt》由会员分享,可在线阅读,更多相关《VFP的数据与运算.ppt(67页珍藏版)》请在三一办公上搜索。
1、,第3章 Visual FoxPro中的数据与运算,教学目的:1.掌握常量、变量的概念、数据类型及使用方法 2.掌握常用函数的格式、功能与使用方法 3.掌握表达式的类型与使用方法重点:表达式的使用难点:数据类型,3.2 Visual FoxPro的常量与变量,3.2.1 常量,常量的类型分为:字符型 数值型 货币型,逻辑型 日期型 日期时间,1.字符型常量又称字符串,是由ASCII字符和汉字组成的一个或一串字符。书写方法:把一串字符写在一对定界符之间。定界符有三种:单引号()、双引号(“”)、方括号()。例:计算机、“Windows”、123.04、A.name、“”(长度为零的空字符串)“F
2、OX”、“FOX”,3.2.1 常量,2.数值型常量又称常数,是由阿拉伯数字、正负号和小数点组成的可以进行算术运算的数。书写方法:(a)十进制数的写法(b)科学记数法例:123、-43.065、0.222E2、638.4E-3、0数值型常量在内存中用8个字节表示,3.2.1 常量,3.货币型常量货币型常量用来表示货币值,以货币符号“$”开头。在存储和计算时四舍五入到4位小数。若小数位不足4位,则尾部补零。1个货币型常量在内存中占8个字节。不能采用科学记数法形式。例:$123.0000,3.2.1 常量,4.逻辑型常量又称逻辑值,用以描述对事物做出判断的一种结果。它只有逻辑真和逻辑假两个值。逻辑
3、型常量两边必须有圆点“.”。1个逻辑型常量在内存中占1个字节。逻辑真:.T.、.t.、.Y.、.y.逻辑假:.F.、.f.、.N.、.n.,3.2.1 常量,5.日期型常量一种由数字按固定格式组成的特殊类型。日期型常量两边必须用大括号 括起来,年月日彼此间用分隔符(.-/)隔开。而用字符串表示日期型常量时需用CTOD()函数进行转换。例:2006.03.15、2006-03-15、2006/03/15、CTOD(“03/15/2006”)、,3.2.1 常量,6.日期时间型常量日期时间型常量由日期和时间两部分组成,也必须用大括号 括起来。1个日期时间型常量在内存中占8个字节。严格的日期时间型常
4、量格式为:yyyy-mm-ddhh:mm:ssa|p例:2006-05-04 02:30:20 p,3.2.1 常量,日期时间型常量,1.日期格式中的世纪值 命令方式格式:SET CENTURY ON|OFF功能:该命令用于设置显示日期时是否显示世纪说明:ON:表示日期值输出时显示年份值,即日期 数据显示10位,年份占4位 OFF:默认值。表示日期值输出时不显示年 份值,即日期数据显示8位,年份占2位,日期时间型常量,2.设置日期显示格式 命令方式格式:SET DATE TO AMERICAN|ANSI|BRITISH|FRENCH|GERMAN|ITLIAN|JAPAN|USA|MDY|DM
5、Y|YMD|SHORT|LONG功能:该命令用于设置日期的显示输出格 式。系统默认为AMERICAN(美国日 期格式),日期时间型常量,3.设置日期分隔符 命令方式格式:SET MARK TO 日期分隔符功能:设置显示日期时使用的分隔符,如/、-、.等。如没有指定任何分隔符,则恢复 系统默认的/分隔符例:SET MARK TO“.”,3.2.2 变量,变量是在命令操作过程中可以改变其值的量在Visual FoxPro中变量分为字段变量、内存变量、数组变量和系统变量4类此外,Visual FoxPro作为面向对象的程序设计语言引入了对象的概念,对象实质上也是一类变量确定一个变量,需要确定其3个要
6、素:变量名、数据类型和变量值,3.2.2.1 命名规则,使用字母、汉字、下划线和数字命名。虽然中文版Visual FoxPro允许使用汉字为各类变量命名,但一般建议尽量不采用汉字命名,以提高操作效率(2)命名以字母或下划线开头。除自由表中字段名、索引的TAG标识名最多只能10个字符外,其他的命名可使用1128个字符(3)为避免误解、混淆,不应使用Visual FoxPro保留字(命令名、函数名等各种系统预定义项的名称)进行命名,3.2.2.2 字段变量,字段变量就是表中的字段名,它是表中最基本的数据单元与其他变量不同的是,字段变量是定义在表中的变量,随表的存取而存取,因而是永久性变量字段变量的
7、类型可以是Visual FoxPro的任意数据类型,字段值就是变量值字段变量的名字、类型、长度等是在定义表结构时定义的,3.2.2.3 内存变量,内存变量是内存中的一个存储区域,变量值就是存储在这个区域里的数据,变量的类型取决于变量值的类型内存变量独立于表而存在,在使用时随时建立内存变量的类型有字符型、数值型、货币型、逻辑型、日期型和日期时间型等,3.2.2.3 内存变量,1.内存变量的赋值内存变量赋值既可以定义一个新的内存变量,也可改变已有内存变量的值或数据类型给内存变量赋值的命令有两种格式:格式1:=格式2:STORETO例:STORE 1234.05 TO A,B B=2006.03.1
8、5 E_E=.T.FF=“234.98”计算机=电脑 A=A+1 A1=A2=254 STROE 3+4 TO CCC,3.2.2.3 内存变量,2.内存变量的显示可以用两个命令将当前已定义的内存变量在屏幕上显示出来,包括其变量名、作用域、类型和当前值格式1:DISPLAY MEMORY LIKE TO PRINTERTO FILE格式2:LIST MEMORY LIKE TO PRINTERTO FILE,3.2.2.3 内存变量,2.内存变量的显示说明:LIST命令为依次不分屏显示所有内存变量 DISPLAY命令分屏显示所有内存变量,显示满 一屏后暂停,可按任意键继续显示下一屏 LIKE选
9、项表示显示与通配符相匹配的内存变 量,在中允许使用符号?和*,分别代 表单个字符和多个字符 TO PRINTER或TO FILE 选项可将内 存变量的有关信息在打印机上打印出来,或者 以给定的文件名存入文本文件中(扩展名为.txt),3.2.2.3 内存变量,3.内存变量文件的建立将所定义的内存变量的各种信息全都保存到一个文件中,该文件称为内存变量文件。其默认的扩展名为.mem。格式:SAVE TO ALL LIKE|EXCEPT 功能:将指定的内存变量存入指定的内存变量文件说明:ALL或缺省可选项时,表示将全部内存变量存 入文件中 ALL LIKE表示所有与通配符相匹配的 内存变量都存入文件
10、 ALL EXCEPT表示把与通配符不匹配的全部内存变量存入文件中,3.2.2.3 内存变量,4.内存变量的恢复格式:RESTORE FROM ADDITIVE功能:将指定的内存变量文件中的各个内存变量调入内存说明:若命令中含有ADDITIVE任选项,系统不清除内存中现有的内存变量,并追加文件中的内存变量,否则调入的内存变量将覆盖原有的内存变量,3.2.2.3 内存变量,5.内存变量的清除格式1:CLEAR MEMORY格式2:RELEASE ALL LIKE|EXCEPT功能:释放和清除指定的内存变量 说明:第一条命令是清除所有的内存变量,第二条命令是清除指定的内存变量,3.2.2.4 数组
11、变量,1.数组的定义数组变量是结构化的变量,就是变量名相同而下标不同的一组变量。格式:DIMENSION|DECLARE(,),(,)例如:DIME A(5),B3,3,3.2.2.4 数组变量,2.数组的赋值数组定义后,数组中每个元素就自动取得逻辑值.F.。给数组赋值的命令与简单变量相同,给数组赋值时,若只写出数组名称,未指明下标,则数组中的所有数组元素同时被赋予同一个值,若指明下标,则给指定的数组元素赋值。VFP允许同一数组中的各个数组元素存储不同类型的数据,每个数组元素的类型就是由该数组元素存放的数据类型决定的。例:STORE 1 TO A B(2,1)=“计算机”B(3,3)=123,
12、3.2.2.5 系统变量,系统变量是Visual FoxPro系统特有的内存变量系统变量名都是以下划线开始,它与一般变量有相同的使用方法在定义内存变量和数组变量名时,不要以下划线开始,以免与系统变量名冲突,表达式是用运算符把常量、变量、函数等按一定的规则连接起来的式子。表达式的类型可分为数值型、字符型、日期型、关系型和逻辑型共5种。,3.4 Visual FoxPro的表达式,又称算术表达式,由数值运算符把数值型常量、变量连接而成。运算结果为数值型。,3.4.1 数值表达式,例1:数学式 a-2x(a-b)4(2ab+a)对应VFP表达式(A(-2*X)*(A-B)/4*(2*A*B+A)例2
13、:4+(6-3)2*2*2/6%5,3.4.2 字符表达式,又称字符串连接,由字符连接运算符将字符型常量、变量连接而成。运算结果仍为字符型。连接运算符有:+两字符串直接相连-两字符串相连,并把前串尾部空格移到 字符串的尾部例:STORE“DAY”TO A STORE“YEAR”TO B C=A+B?C DAY YEAR D=A-B?D DAY YEAR,3.4.3 日期和时间表达式,由日期运算符把日期型或数值型常量、变量连接而成。运算结果为日期型或数值型。日期运算符有+和-,两操作数不同,其结果也不同。1)日期与整数的加减,结果为日期型。例:DATE()+2 与 DATE()-22)两个日期量
14、的减法运算,结果为数值型。例:DATE()-1999.12.31 1999.12.31-DATE()日期型数据不能做其它的运算。,3.4.4 关系表达式,由关系操作符将数据连接而成的表达式,其运算结果为逻辑值。,=字串精确匹配比较$子字符串比较,关系操作符(又称比较操作符)有:=等于#或 或!=不等于 大于=大于等于=小于等于,3.4.4 关系表达式,各种类型数据的比较规则如下:数值型和货币型数据根据其代数值的大小进行 比较 日期型和日期时间型数据进行比较时,离现在 日期或时间越近的日期或时间越大 逻辑型数据比较时,.T.比.F.大 对于字符型数据,通过自左向右逐个比较其字 符的排列顺序来决定
15、其大小,3.4.4 关系表达式,字符排序次序设置格式:SET COLLATE TO“Machine”|“PinYin”|“Stroke”说明:VFP默认的字符排序次序是“PinYin”字符串精确比较设置格式:SET EXACT ON|OFF说明:OFF为非精确比较,ON为精确比较。精确比较时忽略字符串末尾的空格。,3.4.4 关系表达式,例:SET EXACT OFF?4+34*3 A1=“CHINA”C1=“CH”?A1=C1?C1=A1?C1$A1?A1$C1?“计算机”=“计算机”?“计算机”=“计算机”?“计算机”=“计算机”?1978/12/241965/09/09?“A”=“a”,
16、3.4.5 逻辑表达式,由逻辑操作符将关系表达式连接起来的式子。逻辑运算符(按优先级)有:.NOT.或!逻辑非.AND.逻辑与.OR.逻辑或 例:有 A=.T.,B=.F.,C=.F.,D=.T.:?.NOT.A,3.4.5 逻辑表达式,说明:当多种运算符同时出现时,括号的优先级最高,最内层的括号最优先,其余运算符优先级别从高到低依次为:算术运算符、字符运算符、日期运算符 关系运算符 逻辑运算符,例:A=12 B=8 C=.T.D=“CHINA”?(A+B)/2=10%3.OR.C).AND.“NIH”$D,3.3 Visual FoxPro的函数,3.3.1 数值函数1.求绝对值函数格式:A
17、BS()功能:求数值型表达式的绝对值。函数值为数值型2.求最大值函数格式:MAX(,)功能:求n个表达式中的最大值说明:这n个表达式必须是同类型的数据。表达式的类型可以是数值型、字符型、货币型、浮点型、双精度型、日期型和日期时间型,3.3.1 数值函数,3.求最小值函数格式:MIN(,)功能:求n个表达式中的最小值4.求平方根函数格式:SQRT()功能:求数值型表达式的算术平方根,数值型表达式的值应不小于零。函数值为数值型5.求指数函数格式:EXP()功能:将数值型表达式的值作为指数x,求出ex的值。函数值为数值型,6.求对数函数格式:LOG()LOG10()功能:LOG求数值型表达式的自然对
18、数,LOG10求数值型表达式的常用对数,数值型表达式的值必须大于零。函数值为数值型7.取整函数格式:INT()CEILING()FLOOR()功能:INT取数值型表达式的整数部分。CEILING取大于或等于指定表达式的最小整数。FLOOR取小于或等于指定表达式的最大整数。函数值均为数值型,3.3.1 数值函数,8.求余数函数格式:MOD(,)功能:求除以所得出的余数,所得余数的符号和表达式2相同。如果被除数与除数同号,那么函数值即为两数相除的余数。如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值 9.四舍五入函数格式:ROUND(,)功能:对进行四舍五入。数值型表达式2表示保留的小
19、数位数,3.3.1 数值函数,3.3.1 数值函数,10.函数格式:PI()功能:返回圆周率的近似值11.符号函数格式:SIGN()功能:返回数值型表达式的符号。自变量为正、负、零,分别返回1、-1、0,3.3.1 数值函数,12.正弦函数格式:SIN()功能:返回一个角度的正弦值。数值型表达式以弧度为单位。13.余弦函数格式:CON()功能:返回一个角度的余弦值。数值型表达式以弧度为单位。14.正切函数格式:TAN()功能:返回一个角度的正切值。数值型表达式以弧度为单位。,3.3.2 字符函数,1.求字符串长度函数格式:LEN(字符型表达式)功能:求字符串的长度,即所包含的字符个数。若是空串
20、,则长度为0。函数值为数值型2.生成空格函数格式:SPACE()功能:生成若干个空格,空格的个数由数值型表达式的值决定,3.3.2 字符函数,3.大小写字母转换函数格式:LOWER()UPPER()功能:LOWER将字符串中的大写字母转换成小写,其他字符不变UPPER将字符串中的小写字母转换成大写,其他字符不变 4.求子串位置函数格式:AT(,)功能:返回在的起始位置值,若不存在,则函数值为0。函数值为整数,3.3.2 字符函数,5.取左子串函数格式:LEFT(,)功能:截取左面的个字符6.取右子串函数格式:RIGHT(,)功能:截取右面的个字符7.取子串函数格式:SUBSTR(,)功能:截取
21、中第个字符开始的共个字符,3.3.2 字符函数,8.删除字符串前后空格函数格式:LTRIM()RTRIM|TRIM()ALLTRIM()功能:LTRIM删除字符串的前导空格。RTRIM和TRIM删除字符串的尾部空格。ALLTRIM删除字符串中的前导和尾部空格。ALLTRIM函数兼有LTRIM和RTRIM函数的功能。,3.3.2 字符函数,9.字符串替换函数格式:STUFF(,)功能:从指定位置开始,用替换中的个字符起始位置和字符个数分别由数值型表达式1和数值型表达式2指定。如果字符型表达式2的值是空串,则字符型表达式1中由起始位置开始所指定的若干个字符被删除说明:串和被替换字符个数不一定相等。
22、若 0,则直接插入;若的值是空串,则删除串中个字符;若数值型表达式10,则从首字符开始替换,3.3.2 字符函数,10.字符复制函数格式:REPLICATE(,)功能:重复给定字符串若干次,次数由数值型表达式给定11.字符匹配比较函数格式:LIKE(,)功能:确定一个字符表达式是否与另一个字符表达式相匹配。说明:中可以包含通配符*和?。问号(?)可与 中的任何单个字符相匹配,星号(*)可与任意数目的字符相匹配。,3.3.2 字符函数,12.宏代换函数格式:&字符型内存变量名功能:用内存变量的值替换宏代换符号&和内存变量名。,例:var1=100 var1d=200 flag=1?var&fla
23、g?var&flag.d,例:x=Visual y=FoxPro xy=“x+y”?xy,&xy x1=75-10-15?x1,&x1,3.3.2 字符函数,例:dbname=学生 use&dbname command1=list command2=学号&command1&command2,例:X=STR(12.0,4,1)Y=RIGHT(X,3)Z=&X+&Y?Z,&Z,3.3.3 日期和时间函数,1.系统日期函数格式:DATE()功能:给出当前的系统日期,函数值为日期型 2.系统时间函数格式:TIME()功能:给出当前的系统时间,形式为hh:mm:ss,函数值为字符型3.系统日期时间函数格
24、式:DATETIME()功能:给出当前的系统日期和时间,函数值为日期时间型,3.3.3 日期和时间函数,4.日期函数格式:DAY()功能:返回日期型表达式或日期时间型表达式所对应月份里面的天数。函数值为数值型5.月份函数格式:MONTH()CMONTH()功能:MONTH函数返回日期型表达式所对应的月份数,函数值为数值型。CMONTH函数返回月份的英文名,函数值为字符型。,3.3.3 日期和时间函数,6.年份函数格式:YEAR()功能:返回日期表达式所对应的年份值。函数值为数值型7.求时、分和秒函数格式:HOUR()MINUTE()SEC()功能:HOUR函数返回日期时间型表达式所对应的小时部
25、分(按24小时制)。,3.3.3 日期和时间函数,8.求星期函数格式:DOW()CDOW()功能:CDOW函数返回日期型表达式中星期的数值,用17表示星期日星期六,函数值为数值型。CDOW函数返回日期型表达式中星期的英文名称,函数值为字符型。,3.3.4 转换函数,1.将字符转换成ASCII码的函数格式:ASC()功能:给出指定字符串首字符的ASCII码值。函数值为数值型2.将ASCII值转换成相应字符函数格式:CHR()功能:将数值型表达式的值作为ASCII码,给出所对应的字符,3.3.4 转换函数,3.将字符串转换成数值函数格式:VAL()功能:将由数字、正负号、小数点组成的字符串转换为相
26、应的数值型数据说明:若字符串中含有非上述字符,则转换到该字符为止 若串的第一个字符即非上述字符,函数值为0 前导空格不影响转换 返回值四舍五入默认保留2位小数,3.3.4 转换函数,4.将数值转换成字符串函数格式:STR(,)功能:将的值转换成字符串说明:表示转换后字符串的长度 表示四舍五入后保留的小数位数 省略时,转换后将无小数部分 省略和时,字符串长度为10,无小数部分 如果指定的长度小于小数点左边的位数,则返回 指定长度个星号*,表示出错,3.3.4 转换函数,5.将字符串转换成日期或日期时间函数格式:CTOD()功能:将指定的字符串转换成日期型数据。说明:字符型表达式中的日期部分格式要
27、与系统设置的日期显示格式一致,其中的年份可以用4位,也可以用2位。如果用2位,则世纪值由SET CENTURY TO 命令指定,3.3.4 转换函数,6.将日期或日期时间转换成字符串函数格式:DTOC(|,1)功能:DTOC函数将日期数据或日期时间数据的日期部分转换为字符型数据说明:字符串中日期和时间的格式受系统设置的影响。若选用1,结果为yyyymmdd格式;缺省可选项,返回值为mm/dd/yy,3.3.5 测试函数,1.数据类型测试函数格式:VARTYPE(,)功能:测试表达式的数据类型,返回用字母代表的数据类型。函数值为字符型说明:未定义或错误的表达式返回字母U 若表达式是一个数组,则根
28、据第一个数组元素的 类型返回字符串 若表达式的运算结果是NULL值,则根据函数中 逻辑表达式的值决定是否返回表达式的类型。如 果逻辑表达式为.T.,则返回表达式的原数据类 型。如果逻辑表达式为.F.或省略,则返回X,表 明表达式的运算结果是NULL值,3.3.5 测试函数,2.“空”值测试函数格式:EMPTY()功能:确定表达式是否为空值,如果是则返回“真”(.T.);否则返回“假”(.F.)。3.NULL测试函数格式:ISNULL()功能:如果表达式的计算结果为 null 值,则返回“真”(.T.);否则返回“假”(.F.)。,3.3.5 测试函数,4.表头测试函数格式:BOF()|)功能:
29、测试指定或当前工作区的记录指针是否移到表起始处。若记录指针指向表中首记录的前面,函数值为.T.,否则为.F.5.表尾测试函数格式:EOF(|)功能:测试指定或当前工作区中记录指针是否移到表结束处。若记录指针指向表中最后一个记录之后,函数值为.T.,否则为.F.,3.3.5 测试函数,6.文件是否存在测试函数格式:FILE()功能:检测指定的文件是否存在。若文件存在,函数值为.T.,否则函为.F.说明:文件名必须是全称,包括盘符、路径和扩展名,且是字符型表达式7.记录号测试函数格式:RECNO(|)功能:返回指定或当前工作区中表的当前记录的记录号,函数值为数值型,3.3.5 测试函数,8.记录个
30、数测试函数格式:RECCOUNT()功能:返回当前或指定表中记录的个数9.查找是否成功测试函数格式:FOUND()功能:在当前或指定表中,检测是否找到所需的数据。若找到所需的数据记录,函数值为.T.,否则为.F.,3.3.5 测试函数,10.判断值介于两个值之间的函数格式:BETWEEN(,)功能:判断表达式的值是否介于相同数据类型的另外两个表达式值之间。若是,返回.T.值,否则返回.F.。11.条件测试函数格式:IIF(,)功能:如果逻辑型表达式的值为.T.,则函数值为的值,否则为的值,3.3.5 测试函数,12.记录删除测试函数格式;DELETED(|)功能:测试当前或指定表中记录指针所指
31、的当前记录是否有被逻辑删除。若是则为真,否则为假,显示提示对话框函数MESSAGEBOX(提示文本,对话框类型,对话 框标题文本),数值 对话框按钮0 仅有“确定”按钮1“确定”和“取消”按钮2“放弃”、“重试”和“忽略”按钮3“是”、“否”和“取消”按钮4“是”、“否”按钮5“重试”和“取消”按钮16“停止”图标32 问号48 惊叹号64 信息(i)图标0 默认第一个按钮256 默认第二个按钮512 默认第三个按钮,返回值 按钮 1 确定 2 取消 3 放弃 4 重试 5 忽略 6 是 7 否,上机练习,VFP上机实验指导书上的实验1 常量、变量、数据、函数和表达式注意:实验中用到TYPE()函数时,将其改为VARTYPE()。,