1、第三章 VFP 数据基础3.1 数据类型(1)字符型数据用 C(Character)表示,它可以由英文字母、数字、汉字和各种符号组成。其最大长度为254 个字符,且使用时必须用定界符(“ ” , , )括起来。(2)数值型数据用 N(Numeric)表示,它只能由数字、正负号和小数点组成。其最大长度为 20 位(包括符号位、小数点和小数位) ,但只有前 16 位有效。(3)浮点型数据用 F(Float)表示,它是数值型数据的一种。增设浮点型数据主要目的是使计算精度提高。(4)逻辑型数据用 L(Logical)表示,其长度固定为 1 个字节。它只允许两个逻辑值:真用.T.或.t.、 .Y.或 .
2、y.表示,假用.F.或.f.、.N.或.n. (5)日期型数据和日期时间型用 D(Date)表示日期型数据,其长度固定为 8 个字节。默认格式为MM/DD/YY, 严格的日期格式格式为yyyy-mm-dd。日期格式设置命令:SET STRICTDATE TO 1 设置为严格的日期格式 2002-06-09SET STRICTDATE TO 0 设置为通用的日期格式SET CENTURY ON 设置世纪的日期格式(输出四位年份)SET CENTURY OFF 取消世纪的日期格式用 T(Time)表示日期时间型数据,默认格式为MM/DD/YY HH:MM:/SS,如: 12/3/97 8:58:1
3、8 (6)备注型数据用 M(memory)表示,用于存储长度不定的文本数据,存放指向备注型数据在备注文件中存放的位置。其长度固定为 4 个字节,但实际数据存放在另一个与数据表同名的备注文件(扩展名为.FPT)中。(7)通用型数据用 G(General)表示,它是一种特殊的备注型,专用于保存 windows OLE(对象链接与嵌入)数据,例如图形和声音。其长度也固定为 4 个字节,存放这些数据具体存放的位置,而实际数据也存放入另一个同名备注文件(扩展名为.FPT)中。3.2常量一、常量:程序运行过程中其值不变的量。P32类型: 字符型常量 C (定界符 “ ) 、数值型常量 N (没有定界符)日
4、期型常量 D (定界符) 、 浮点型常量 F (科学记数法描述)逻辑型常量 L (.T.、.t. 、.Y.、.y.、.F.、.f.、.N. 、.n.) !注意 ! 判断常量的唯一标准是定界符!显示数据时,定界符都不会显示! 例如:日期型03/04/98和03/04/98显示的结果是一样的3.3 变量变量: 程序运行过程中其值可以改变的量变量分类: 字段变量内存变量:普通内存变量数组变量系统变量字段变量 :即字段。数据表中,同一字段名下的数据值是不同的,因而每个字段都称为字段变量。字段变量的类型:C 、 N、 D、 L 、T、M 、G 等.内存变量 :是内存中的临时工作单元,用于保存所需常数、中
5、间结果和最后结果,它独立于数据库和表文件,其数据类型由它所存放的数据类型决定。内存变量的两个使用原则: 内存变量名不能与 Visual FoxPro 的保留字同名,当内存变量与字段变量同名时,使用内存变量必须在前面加 m.或 m-或 M-或 M. (一个减号加一个大于号) 。例如:m.姓名 程序使用内存变量前,一定要为其赋初值,否则将显示错误信息:“找不到变量某某” 。内存型变量的类型为:C、 N、D、F、L 和 S说明:(1)内存变量的命名规则:由字母或者汉字开头,数字、字母、汉字、下划线构成,字母不区分大小写。例如:合法的: a 、kill123 、ss_ss 、姓命 、中 123a_ss
6、不合法的:sss、1a 、l*ss 、k$ss 、(2)内存变量的赋值: store to 或 = 区别: =只能为一个变量赋值; store 则可以为多个变量赋同样的值例如: a=b=3 是错误的 , store 3 to a,b a=3 是正确的(3)内存变量的显示输出a. 只查看内存变量的值?换行显示;?当前行显示b.显示内存变量的名称、类型和值:LIST|DISPLAY MEMORY LIKETO PRINTER PROMPT|TO FILE 例如:LIST MEMORY LIKE ? LIST MEMORY LIKE a* (4)了解内存变量的保存与恢复:保存内存变量: save t
7、o 恢复内存变量: restore from .(5)内存变量的清除clear memoryrelease release all LIKE/EXCEPT数组变量 :按一定顺序排列的一组内存变量的集合。数组使用前必须定义。定义: dimention/declare 数组名 1(表达式 1,表达式 2),数组名 2(表达式 1,表达式 2)例如:dime arr(4) dime k(4,2),bee(5)赋值: k(3,1)=“人” store 1 to k 注意: 定义数组后,数组中的每个元素被自动赋予逻辑值 .F.;只能定义一维或二维数组.系统变量 :由系统自动生成和维护的内存变量,以_开头
8、,用户不能修改,修改了也不会生效。 _DIARDATE: 当前日期3.4 表达式1. 算术表达式: + - * / *或 %2. 字符表达式: + - $3. 关系表达式: 、=、=、字符日期关系 逻辑说明:(1)关系运算的两操作数必须同类型,结果是逻辑型。(2)=表示等于.在 SET EXACT OFF 状态下,用“=”比较两个字符串时,只要“=”右边的字符串与左边的字符串的左端部分相同,即认为是相等。若是在 SET EXACT ON 状态下,则要完全相同才是相同。 =是精确等于,主要用字符串比较中。例如:?“ab“=abc, “ax“=“axax“, “axax“ = “ax“ ,“aX“
9、=ax ?“你好“=“ 你好“,“你好“=“你好“拿右边的字符串和左边的比较(3)逻辑运算:对于 and 来讲,如果其中一边为.F.,那么结果都为.F. 对于 or 来讲,如果其中一边为.T. ,那么结果都为.T. 也就是说可以将.t.看作 1,.f. 看作 0,and 看做 交 ,or 看做并a b aandb a b aorb 1 1 1 1 1 11 0 0 1 0 10 1 0 0 1 10 0 0 0 0 0优先级:notandor例如:x=10x23 and “this”=”this” and x(2+13)/23*11 and (max(12,22)min(22,22) or x
10、0)描述: * 50 岁以上的男生 *性别=”男” and 年龄50入校总分在 450 分以上的男同学和在 400 分以上的女同学 *书写表达式的规则1.所有字符都必须写在同一行上;如:X 3Y 要写成:X3*Y。00 AND X(参数表)对于函数需要大家了解的有:1、函数名2、除了&宏函数外,所有函数必须加 ()3、函数的作用4、函数的参数5、函数的返回值及其类型六类函数:数值运算函数:INT()、ABS()、MAX()、MIN() 、SQRT()、ROUND()、MOD()字符处理函数: LEN()、AT() 、SPACE()、SUBSTR() 、LEFT() 、RIGHT() TRIM=RTRIM(TRIMALLTRIMLTRIMRTRIM)、STUFF()、& :宏函数转换函数: LOWER()、UPPER() 、CTOD() 、DTOC()、STR()、VAL()、 ASC()、CHR()、日期时间函数:DATE()、TIME() 、YEAR()、MONTH()、DAY()测试函数:RECNO() 、BOF()、EOF()、FOUND()、FILE()、DBF() 、RECCOUNT()、SELECT()、TYPE()、IIF()、其它:ROW()、COL()、INKEY() 、READKEY()