1、授课班级,工程101 102班,主讲教师:黄晗,二O一一年三月,Visual FoxPro使用与开发技术,Visual FoxPro基础知识篇,Visual FoxPro使用与开发技术,数据类型,?,Visual FoxPro使用与开发技术,Visual FoxPro使用与开发技术,字符型,日期型,数值型,逻辑型,备注型,商品名,字符型,字符型,字符型,课程名,学号,帐号,出生日期,入学日期,成绩,存款额,家庭地址,工作单位,婚否,注册否,商品简介,部门概况,通用型,样品,证件,在Visual FoxPro中所有的数据都具有类型,数据类型决定数据的存储和使用方式,即数据的取值范围和可以进行的操
2、作。 Visual FoxPro6.0的数据类型分为两大类,一种适用于变量和数组,另一种适用于数据表中的字段。 Visual FoxPro定义了13种字段类型和7种数据类型。 字段类型是:字符型、数值型、浮点型、双精度型、整型、货币型、日期型、日期时间型、逻辑型、备注型、通用型、二进制字符型和二进制备注型。 数据类型是:字符型、数值型、货币型、日期型、日期时间型、逻辑型和通用型。,Visual FoxPro使用与开发技术,字段类型及使用范围示例,Visual FoxPro使用与开发技术,1. 常量,常量:在程序的运行过程中不改变其值的量 常量的种类: 数值型常量 字符型常量 逻辑型常量 日期型
3、常量 日期时间型常量,Visual FoxPro使用与开发技术,(1)数值型常量,用整数、小数、科学计数法表示的数 举例: 85,-56.2, 1.256E3, 3.8E-2 等,关于科学计数法: 136200 1.362105 13.62104 0.00367 3.6710-3 36.710-4 1.362E5 13.62E4 3.67E-3 36.7E-4,Visual FoxPro使用与开发技术,1. 常量,(2)字符型常量,由一串字符组成的字符串 表示:用“”(双引号)、 (单引号)、 (方括号)括起来 举例: 李平、”dog”、 VFP数据库是合法常量,而”I am a boy”、I
4、ts abest是非法常量。 注意:最长只能为254个字符。,Visual FoxPro使用与开发技术,1. 常量,(3).逻辑型常量,表示“真”或“假”的量 表示方法: “真”.T.、.Y.、.t.、.y. “假”.F.、.N.、.f.、.n. 注意:两边的点不能少,Visual FoxPro使用与开发技术,1. 常量,(4)日期型常量,日期时间常量也必须用花括号括起来, 格式为: YYYY-MM-DDhh:mm:ss a|p 例如:2008/05/19 10:04am、2008-05-21 11:32:14pm。 但必须注意日期和时间之间必须有空格。,(5)日期时间型常量,在Visual
5、FoxPro6.0中日期型常量用花括号“ ”作为定界符括起来,格式为: YYYY-MM-DD 例如:2008/05/18,或2008-05-18。,Visual FoxPro使用与开发技术,1. 常量,2. 变量,在命令操作和程序运行过程中其值允许变化的量称变量。 在Visual FoxPro6.0中使用的变量分为内存变量、字段变量两种。 每个变量都必须有一个变量名,变量名是由字母、汉字、数字和下划线组成,但必须以字母或汉字。,Visual FoxPro使用与开发技术,内存变量是表结构之外独立存在于内存中的变量。内存变量可用来存储数据,定义内存变量时需为它取名并赋初值,内存变量建立后存储于内存
6、中。 Visual FoxPro共定义了6种类型的内存变量:数值型、字符型、日期型、日期时间型、逻辑型和货币型。可分为简单变量和数组变量。 内存变量赋值命令 格式1:内存变量= TO 功能: 计算表达式,然后将计算结果赋给内存变量。,2. 变量,Visual FoxPro使用与开发技术,内存变量,表达式值显示命令 格式: ?/? 功能:,将表达式的值显示在屏幕上。 【说明】1.命令格式中的?/?可任选一个,它们的输出格式不同。? 表示从屏幕下一行的第一列起显示结果。? 表示从当前行的当前列起显示结果。例如: A=“abcde”, z1=35 ? A & 在VFP主窗口中显示abcde? z1
7、& 换一行后显示35? “数据库应用” & 接着上一个命令显示结果35的后面显示“数据库应用”2.是表示用逗号隔开的多个表达式组,命令执行时遇逗号就空一格。例如:? “A=”,A & 显示A= abcde,2. 变量,Visual FoxPro使用与开发技术,字段变量是数据表结构中的任意一个数据项。在一个数据表中,一个字段就是一个字段变量。 字段变量在建立表结构时定义,修改表结构时可重新定义,或增删字段变量。 字段变量的类型有13种。 字段变量是一种多值变量,假设一个数据表中有10条记录,那么该数据表的每一字段就有10个取值,当用字段作变量时,它的当前值随着记录指针的移动而不断变化。,2. 变
8、量,Visual FoxPro使用与开发技术,字段变量,数组是具有相同名字、不同下标值的一组变量。数组中的每个数据值称为数组元素,每个数组元素在数组中的位置是固定的,可以通过称为下标的编号来进行访问。 数组在使用时要由DIMENSION或DECLARE命令来定义。 在Visual FoxPro 6.0中,同一个数组元素在不同时刻可以存储不同类型的数据,在同一数组中,每个数组元素可以被赋予不同数据类型的值。,数组变量,2. 变量,Visual FoxPro使用与开发技术,数组的定义,格式:DIMENSION |DECLARE () ,() () ,() 例如:DIMENSION A(4)DIME
9、NSION DA(9) , AB(2,3),2. 变量,Visual FoxPro使用与开发技术,数组的赋值,DIME A(5) A(1)=”ABCD” & 给SZ(1)赋值,字符型,值:ABCD A(2)=23.45 & 给SZ(2)赋值,数值型,值:23.45 A(3)=2007/09/02 & 给SZ(3)赋值,日期型,值:2005年9月2日 A(4)=2007/11/02 9:00am A(5)=T & 给SZ(5)赋值,逻辑型,值:真,2. 变量,Visual FoxPro使用与开发技术,Visual FoxPro6.0 系统为用户提供了十分丰富的函数,灵活运用这些函数,不仅可以简化
10、许多运算,而且能够加强和完善Visual FoxPro的许多功能。函数的一般格式:函数名(自变量表),Visual FoxPro使用与开发技术,1. 数学运算函数,(1)平方根函数SQRT() 【格式】 SQRT(数值表达式) 【功能】 计算并返回数值表达式的算术平方根。 【举例】 ? SQRT(6*6)6.00 (2)绝对值函数ABS() 【格式】 ABS() 【功能】 计算并返回数值表达式的绝对值。 【举例】 ? ABS(-413.29)413.29,Visual FoxPro使用与开发技术,(3)四舍五入函数ROUND() 【格式】 ROUND(数值表达式,有效位数) 【功能】 对数值表
11、达式的值按指定的有效位数进行四舍五入。 【举例】 ? R0UND(4.34259,4), ROUND(1234.5678,0), ROUND(1234.567,-1)4.3426 1235 1230 (4)取整函数INT() 【格式】 INT(数值表达式) 【功能】 计算并返回数值表达式的整数部分。 【举例】 ? INT(88.9876),INT(-76.93)88 -76,1. 数学运算函数,Visual FoxPro使用与开发技术,2. 字符处理函数,(1)取子串函数SUBSTR() 【格式】 SUBSTR(字符串表达式,起始位置 ,长度) 【功能】 从字符串表达式中的起始位置截取子字符串
12、,长度为所截取的子串的长度。 【举例】CN=”ABCDEFG” ? SUBSTR(CN,4,2),SUBS(CN,1,4),SUBS(CN,6,3)DE ABCD FG若省略长度,或者长度超过从起始位置到末尾的长度,则截取的子字符串为从起始位置到字符串表达式末尾的所有字符。例如:? SUBSTR(”VFP程序设计案例教程”,12)案例教程,Visual FoxPro使用与开发技术,(2)求字符串长度函数LEN() 【格式】 LEN字符串表达式 【功能】 返回字符串表达式中所包含的字符个数,即字符串长度。 【举例】 ? LEN(”VFP程序设计案例教程”)19 3搜索子串位置函数AT() 【格式
13、】 AT(字符串1,字符串2,) 【功能】 寻找字符串1在字符串2中首次出现的起始位置。若字符串2中不包含字符串1,则返回值为零。若有“数值表达式”(假设数值表达式为K),则寻找字符串1在字符串2中第K次出现的位置。 【举例】 X=”Visual FoxPro 6.0”? AT(”Fox”,X) & 显示结果为 8? AT(”fox”,X) & 显示结果为 0? AT(”o”,X) & 显示结果为 9? AT(”o”,X ,2) & 显示结果为 13,Visual FoxPro使用与开发技术,【格式】 SPACE(数值表达式) 【功能】产生与数值表达式的值相同的空格数。 【举例】 ? ”程序设
14、计”+SPACE(4)+”案例教程”程序设计 案例教程在“ 程序设计”和“案例教程”之间产生了4个空格字符。,3空格函数SPACE(),Visual FoxPro使用与开发技术,4. 删除空格函数,格式:LTRIM() 功能:删除字符表达式值前的空格 格式:RTRIM(或TRIM() 功能:删除字符表达式值后的空格 格式:ALLTRIM() 功能:将前后的空格去掉 举例 ?“AB”+SPACE(4)+”CD” &返回 AB CD ? ALLTRIM(“ ABCD ”) &返回 ABCD ?len(“ abcd”) &返回5 ?len(alltrim(“ ABCD “) &返回 4,Visual
15、 FoxPro使用与开发技术,【格式】&字符型内存变量 【功能】取“字符型内存变量”的值。 【说明】 (1) 宏代换是一种间接取值的操作,在符号后面必须紧跟(无空格)一个己被赋过值的字符型内存变量的名字。 (2)若&字符型内存变量与后面的字符之间无空格分界时,应加上“”符号作为分界符。 (3)宏代换的使用可以嵌套另一个宏代换,但不能嵌套自己。例如,X=“&X”的写法是错误的。 (4) 对于数字字符串,可以通过&函数使其与其他数字进行计算。,5宏代换函数 &,Visual FoxPro使用与开发技术,【举例】求宏代换。. CH=”X”X=15? &CH &结果为:15TT=”学生成绩”USE &
16、TT &结果为:打开了“学生成绩.dbf”表文件。X=”2006”M=”+”Y=”&X.&M.1”? Y &结果为:2006+1? &Y &结果为:2007,Visual FoxPro使用与开发技术,6日期和时间函数,格式:DATE() 功能:返回系统日期 格式:TIME() 功能:返回系统时间 格式:DATETIME() 功能:返回系统日期时间 格式:YEAR() 功能:返回中的年份,4位整型,Visual FoxPro使用与开发技术,格式:month() 功能:返回中的月份 格式:day() 功能:返回中的日期,举例 ? YEAR(2007-10-23) &返回2007 ? month(d
17、ate() &返回当天的月份,6日期和时间函数,Visual FoxPro使用与开发技术,7测试函数,(1)测试文件头函数BOF() 【格式】 BOF() 【功能】 该函数用于测试指定文件中的记录指针是否指向文件头。如果是则返回真值,否则返回假值。 【举例】 测试文件记录是否指向文件头。USE 学生档案.dbf? BOF() & 显示结果为:.F.SKIP -1 & 移动记录指针到上一条记录命令? BOF() & 显示结果为:.T.,Visual FoxPro使用与开发技术,(2)测试文件尾函数EOF() 【格式】 EOF() 【功能】 该函数用于测试指定文件中的记录指针是否指向文件尾。如果是
18、则返回真值,否则返回假值。 【举例】 测试文件记录是否指向文件尾。USE 学生档案.dbfGOTO BOTTOM? EOF() & 显示结果为:.F.SKIP & 移动记录指针到上一条记录命令? EOF() & 显示结果为:.T.,7测试函数,Visual FoxPro使用与开发技术,【格式】 RECNO() 【功能】 测试指定表文件中的记录指针指向的记录号。若指定的工作区无打开的表文件,函数返回值为:0;若指定的表文件无记录或记录指针位于文件头,函数返回值为:1;若记录指针指向文件尾,函数返回值为末记录号加1。 【举例 】 测试记录指针的当前位置(假设学生档案表中有10条记录)。USE 学生
19、档案.dbfGOTO BOTTOM? RECNO() & 显示结果为:10SKIP ? RECNO() & 显示结果为:11GO TOP ? RECNO() & 显示结果为: 1SKIP -1? RECNO() & 显示结果为: 1,(3)测试当前记录号函数 RECNO(),Visual FoxPro使用与开发技术,(4)“空”值测试函数 【格式】 ISNULL() 【功能】 判断表达式的运算结果是否为 NULL 值,如果是,则返回逻辑真,否则返回逻辑假。 【举例】 STORE .NULL. TO A? A,ISNULL(A) &结果为:.NULL. .T.,7测试函数,Visual FoxP
20、ro使用与开发技术,8转换函数,(1)数值转换为字符串函数STR() 【格式】 STR(数值表达式,长度,小数位如) 【功能】 将数值表达式的值转换为由长度和小数位数指定的字符串。如果长度值比数值表达式的整数位数还要小,则返回由长度个“*”组成的字符串。 【举例】 ? STR(4324.46,6,1)4324.5? STR(4324.46,3,1),STR(4324.46,8,3)* 4324.460,Visual FoxPro使用与开发技术,(2)字符串转换为数值函数VAL() 【格式】VAL(字符串表达式) 【功能】将字符串表达式转换为数值型数据。 【举例】 ? VAL(”132”+”18
21、”)1321800 ? VAL(”312GH”),VAL(”AB204”),VAL(”ASD”)312.00 0.00 0.00,8转换函数,Visual FoxPro使用与开发技术,(3)字符转日期函数CTOD() 【格式】 CTOD(字符串表达式) 【功能】 将“月/日/年”格式的字符串表达式转换为日期型数据。 【举例】 DA=”12/12/07”? CTOD(DA)12/12/07,8转换函数,Visual FoxPro使用与开发技术,(4)日期型转换为字符串函数DTOC() 【格式】 DTOC(日期) 【功能】 将日期转换为相应的字符串。 【举例】 D=2007/11/24DT=DTO
22、C(D)? DT? LEN(DT)11/24/07 8,8转换函数,Visual FoxPro使用与开发技术,Visual FoxPro表达式是由数据、数据存储容器和运算符组成的运算式。 Visual FoxPro有5种常用类型的表达式1. 算术表达式算术表达式是由数值型变量、常量、函数和数值操作符组成的。用于对数值型数据进行常规的算术运算。,Visual FoxPro使用与开发技术,算术运算符,举例: 23=8;7*2 =498/2*3=12474=3,高,Visual FoxPro使用与开发技术,2. 字符表达式:,字符表达式是由字符型变量、常量、函数和字符操作符组成的。用于字符串的连接或
23、者比较。 字符串操作符为:+:连接两个字符串。-:连接两个字符串,并将第一个字符串尾部的空格移到第二个字符串的尾部。$:判断第一个字符串是否是第二个字符串的子字符串。,Visual FoxPro使用与开发技术,例如: LEN1=” VFP ” LEN2=”数据库教程” LEN3=“vf” ? LEN1+LEN2 & 结果为: VFP 数据库教程 ? LEN1-LEN2 & 结果为:VFP数据库教程 ? len(LEN1-LEN2) & 结果为:17 ? LEN3 $ LEN1 & 结果为:.F.,2. 字符表达式:,Visual FoxPro使用与开发技术,3. 日期时间表达式,日期时间表达式
24、是由日期时间型变量、常量、函数和日期时间操作符组成的。 日期时间操作符有: +:添加一个天数或秒数 -:减少一个天数或秒数 例如:? 2008-04-04+10 &结果为:04/14/08? 2008-04-30-15 &结果为:04/15/05? 2008-08-04 10:10a+10 &结果为:08/04/03 10:10:10 AM? 2008-08-04 10:35p-10 &结果为: 08/04/03 10:34:50 PM,Visual FoxPro使用与开发技术,4 .关系运算与关系表达式,Visual FoxPro使用与开发技术,例如: ? ”abc”#”ABC” & 值为.
25、T.? ”abcde”=”abc” & 值为.T.? ”abc”=”abcde” & 值为.F.? ”abcd”=”abcd” & 值为.T.,逻辑表达式是由逻辑型变量、常量、函数和字符运算符组成的。用来对逻辑型数据进行各种逻辑运算,形成各种简单的逻辑结果。,5. 逻辑表达式,高,例如 ?2733 .AND3415 & 值为.F.? 16/29 .OR. ”abc”#”ABC” .AND. NOT.F & 值为.T.,Visual FoxPro使用与开发技术,运算对象和运算结果均为逻辑型 运算符 OR或.OR.:逻辑或,只有两个运算对象均为.F.时,返回.F.;其余均返回.T. AND或.AN
26、D.:逻辑与,只有两个运算对象均为.T.时,返回.T.;其余均返回.F. NOT或.NOT.:逻辑非,运算对象为.T.时,返回.F.;运算对象为.F.时,返回.T.,5. 逻辑表达式,Visual FoxPro使用与开发技术,【格式】&字符型内存变量 【功能】取“字符型内存变量”的值。 【说明】 (1) 宏代换是一种间接取值的操作,在符号后面必须紧跟(无空格)一个己被赋过值的字符型内存变量的名字。 (2)若&字符型内存变量与后面的字符之间无空格分界时,应加上“”符号作为分界符。 (3)宏代换的使用可以嵌套另一个宏代换,但不能嵌套自己。例如,X=“&X”的写法是错误的。 (4) 对于数字字符串,可以通过&函数使其与其他数字进行计算。,6宏替换表达式 &,Visual FoxPro使用与开发技术,【举例】求宏代换。. CH=”X”X=15? &CH &结果为:15TT=”学生成绩.dbf”USE &TT &结果为:打开了“学生成绩.dbf”表文件。X=”2006”M=”+”Y=”&X.&M.1”? Y &结果为:2006+1? &Y &结果为:2007,Visual FoxPro使用与开发技术,6宏替换表达式 &,运算符同级:从左到右 运算符不同级,表达式的运算顺序,Visual FoxPro使用与开发技术,