《《foxpro数据及其》ppt课件》由会员分享,可在线阅读,更多相关《《foxpro数据及其》ppt课件(25页珍藏版)》请在金锄头文库上搜索。
1、第三章 Visual FoxPro中的数据,3.1 常用数据类型,1、数值型(Numeric),简称N型 例:I=23 2、字符型(Character) ,简称C型 例:a=“23” 3、浮点型(Float) ,简称F型 例:1.5103可以表示为1.5E+3,4、日期型(Date),简称D型 格式:美式mm/dd/yy(默认) 欧式dd/mm/yy 中国式yy/mm/dd 改变格式的命令:set date ymd/mdy/dmy Note:其中的“/”也可以用“-”,5、逻辑型(Logical) ,简称L型 逻辑真.t. .T.或.y. .Y. 逻辑假.f. .F.或.n. .N. Note
2、:其宽度系统固定为一个字符。 6、备注型(Memory) ,简称M型 它是用来存放记录中较大的文本,以弥补C型数据不能超过254个字符的缺陷。其在数据库结构中宽度固定为4个字符,用于存放指向具体数据的指针。(.FPT文件) 7、通用型(General) ,简称G型,3.2 常量,1、常量 (1)数值型常量 (2)字符型常量用“”或括起来 (3)逻辑型常量两边有小圆点 (4)日期型常量用CTOD()或来表示 例:“1998年10月15日”可表示为: ctod(“98/10/15”)或98/10/15,变量的三种基本属性:名称、类型、长度 变量名的构成原则: 1、由字母、数字、下划线组成,但必须以
3、字母开头 2、长度不超过10个字符 3、不与FoxPro的保留字名相同 (1)字段变量(N、C、D、L、M型) (2)内存变量(N、C、D、L、M、S型) Note:S型即屏幕型,是非正规类型,可将当前的屏幕内容保存下来。 (3)系统变量以下划线开头,它是全局变量(Public),3.3 变量,内存变量的赋值 格式1:store to 例: store 5 to x ,y,z 格式2: = 例:x=5 Note:当一个内存变量名与当前打开的数据库中的字段变量名重名时,要选用内存变量,可在前加前缀m.或m. 内存变量值的显示 格式:?|? ,1、内存变量,内存变量的分类 、全局变量它可以在整个应
4、用程序的生存过程中存在,可以被应用程序的不同过程和函数调用。 格式:Public 、私有变量只能在建立这个变量的过程或函数中使用。定义了一个私有变量就隐藏了一个同名的全局变量。 格式:Private 、局部变量只能在定义它的过程中使用,不能在下一层的过程中使用。 格式:Local ,内存变量的保存(内存文件名默认扩展名.MEM) 格式1:save to 或save all to 格式2:save all like|except to 格式3:save to memo 内存变量的恢复 格式1:restore from additive 格式2: restore from memo additiv
5、e Note: additive的作用保证不清除内存中现有的内存变量,当有同名内存变量时,用文件中的变量值代替已在内存的同名内存变量的值。,例:现有内存变量: A=“临时文件” B=12.345 AA=03/03/98 命令:save to TEMP或save all to TEMP save all like|except A* to TEMP1 例:现有内存变量: A=“文件” C=10和内存变量名文件TEMP(上例定义) 命令:restore from TEMP restore from TEMP additive,内存变量的清除 格式1:release all like|except
6、格式2:clear memory或clear all Note:clear all与clear memory的区别: 后者的使用也可以释放内存变量,无论这个内存变量在哪一个程序级别中定义,但不会作用于数据库;而前者也可以释放内存变量,在执行时,会自动调用后者,同时执行关闭所有数据库。,数组变量的定义 dimension | declear 数组名(下标) Note:vf能定义一维和二维数组; 数组分量可以是不同类型的值; 对未赋值的数组元素,系统自动赋逻辑假.f. 二维数组可以转化为一维数组。 数组的赋值 与内存变量相同,可用“=”号或store命令,2、数组变量,3、字段变量,表中记录对同一
7、字段名可取不同的值,因此,表中的字段名就是变量,称为字段变量。 字段变量的数据类型最丰富,具有11各不同类型。字段变量引用的完整形式为:表名.字段变量 对当前表中字段可直接引用字段名。,3.4 运算符与表达式,1、运算符,优先级 高 括号() 算术运算符*、/% +、- 字符运算符+、- 关系运算符$ 其它 低 逻辑运算符.not.and.or.,2、表达式 (1)数字表达式 (2)字符表达式 例:C1=“中国 ”+“人民” 结果为:“中国 人民” C2= “中国 ”-“人民” 结果为:“中国人民 ” (3)关系表达式 若为数值型数据则按数值的大小进行比较 例:?32 若为字符型数据则按字符的
8、ASCII码的大小进行比较 例:?“ABC”=”AB” (set exact off时,结果为.t.) ?“AB”=”ABC” (结果为.f.) ?“设计” $ “程序设计” Note:、命令set exact off|on,默认为on状态 、用“= =”比较是严格比较(不管是off还是on状态),若为日期型数据则按日期先后次序比较,后者为大 例:90-08-12 98-08-12 若为汉字则按其机内码的大小进行比较 (4)逻辑表达式 .not. .and. .or. (5)日期表达式 日期日期 日期+整数 例:?ctod(“99/02/12”)+10 ? ctod(“99/05/05”) -
9、ctod(“99/04/20”),3.5 常用函数,在VFP中,函数主要分为以下五大类: 1、数值函数 2、字符函数 3、日期时间函数 4、转换函数 5、测试函数,1、数值函数 (1)取绝对值函数 ABS(数值表达式) (2)取整函数 INT(数值表达式) (3)求平方根函数 SQRT(数值表达式) (4)求幂函数 EXP(表达式) (5)求函数 PI( ) (6)求余数函数 MOD(表达式1,表达式2) (7)四舍五入函数 ROUND(表达式,小数位n) 例:?MOD(10,-3) Note:余数的符号与表达式2的符号相同;余数的绝对值比表达式2的绝对值小。 例: ?ROUND(3.1415
10、19,3) ?ROUND(15/7,4) Note:结果自动对n+1位四舍五入到第n位。,2、字符函数 (1)AT:求一个字符串在另一个字符串中的起始位置 AT(字符串1,字符串2) 例:?AT(“bc”,”abcd”) ?AT(“bc”,”acbd”) (2)LEN:求字符串的长度 LEN(字符串) 例:x=“ABC” ?LEN(x) (3)去掉字符串的空格 TRIM(字符串) 、 RTRIM(字符串)、 LTRIM(字符串)、ALLTRIM(字符串) (4) 空格函数 SPACE(N) (5)取子字符串 SUBSTR(字符串,起始位,子串长) 例:c=substr(“computer”,4
11、,3) ?c,取左子串 LEFT(字符串,子串长) 例:?left(“computer”,4) 取右子串 RIGHT(字符串,子串长) (6) 宏替换函数 &字符型内存变量 例:x=“RYDJ” use &x Note:要显示“RYDJ”,则用?x,而不用?&x,否则将警告“RYDJ”变量找不到。 (7)字符重复 REPLICATE(字符串,次数),3、转换函数 (1)数值转换函数 STR(数值式,长,小数位)、VAL(串) 例:?str(45.67,6,3),val(“-3a2”) ?str(3.1415926535,8,4), val(“3+2”) (2)大小写转换 UPPER(字符串)
12、LOWER(字符串) (3)ASCII码符 CHR(数值表达式) ASC(字符串) (4)字符转日期 CTOD(日期字符串) (5)日期转字符 DTOC(日期表达式) Note: 日期表达式有两种: 日期 用CTOD函数转换,4、 日期时间函数 DATE() 、TIME() 、DATETIME() YEAR(日期型表达式) 、 MONTH(日期型表达式) 、DAY(日期型表达式) HOUR(日期型表达式)、MINUTE(日期型表达式)、SEC(日期型表达式),5、测试函数 (1)测试文件开始 BOF(工作区编号) Note:若当前记录为第一条,则SKIP 1时为真。 (2)测试文件末尾 EOF
13、(工作区编号) Note:若当前记录为最后一条,则SKIP 时为真。 (3)测试记录号 RENCO(工作区编号) 例:go 4 skip 1 ? recno() (4)查询测试 FOUND(工作区编号) Note:用SEEK,FIND,LOCATE函数可以查找记录,找到与否用此函数测试。 (5)数据类型 TYPE(“”)或vartype(表达式) 例:x=5 ?type(“date()”),vartype(date() ?type(“x”),vartype(x),(6)测试文件的存在 FILE(字符串) 例: accept “输入文件名” to fm if file(fm) use &fm l
14、ist else ?”文件未找到” Endif (7)选择函数 IIF(,) 例:x=3 ?iif(x=0,sqrt(x),”不能开方”) 相当于下面这段程序:If x=0 ?sqrt(x) else ?”不能开方” endif,(8)测试空值(null)函数 isnull(表达式) 例: store .null. To a ? isnull(a) (9)记录个数测试函数 reccount(工作区号或表别名) 例:use 学生 ?Reccount( ) (10)值域测试函数 between(表达式,表达式,表达式) 例:use 学生 go 5 ?between(入校总分,300,500),上机实习,内容:实习三 要求: 1.了解常量、变量、函数和表达式的输入输出 2.掌握不同类型变量的常规处理 3.重点掌握常用函数的功能和使用,