660 likes | 824 Views
第 3 章 VFP 简介. 一、 VFP 的界面组成 二、 VFP 的操作方式 1、命令操作方式 2、菜单操作方式 3、工具操作方式 4、程序操作方式. 交互. 命令操作方式 — 指在交互窗口键入命令即可操纵数据库。 如:删除一条记录,键入 DELETE 优点:能直接使用系统的各种命令和函数 菜单操作方式 — 系统将若干命令做成菜单,用户可通过菜单选择 来操纵数据库。 工具操作方式
E N D
一、VFP 的界面组成 二、VFP的操作方式 1、命令操作方式 2、菜单操作方式 3、工具操作方式 4、程序操作方式 交互
命令操作方式 —指在交互窗口键入命令即可操纵数据库。 如:删除一条记录,键入DELETE 优点:能直接使用系统的各种命令和函数 菜单操作方式 —系统将若干命令做成菜单,用户可通过菜单选择 来操纵数据库。 工具操作方式 —VFP中提供了许多工具,如:表设计器、数据库 设计器 程序操作方式 —将命令序列编写成程序,通过运行程序来操作 数据库。
VFP的命令格式、特点: (p19) 命令格式: 命令动词 [<子句>] 其中: 命令动词—特定的英语单词或符号,表明要完成的动作。 大小写均可,多于4个字母时,可只键入前4个。 (如:DISPLAY——DISP或disp) <子句>—用英语单词标识,用来对所要执行的命令进行 某些限制性说明,如操作对象、范围、条件等。
[……] 方括号中的内容为可选项。 <……> 尖括号中的内容由用户提供。 | 其中可选择一项
典型格式: 命令动词 [<范围>] [FIELDS<字段名表>] [FOR WHILE<条件>] 其中: ①<范围>子句:指出命令对库表文件记录的作用范围 ALL—对所有记录进行操作 NEXT <n> —对从当前记录开始的n个记录进行操作 RECORD<n>—仅对第n条记录进行操作 REST—对从当前记录开始到最后一条记录进行操作
② FIELDS<字段名表>: 表示只处理表文件中指定的几个字段。 如:USE STUDENT LIST FIELDS 学号,姓名,档案
③FOR<条件>: 限定该命令仅对满足条件的记录进行操作, 与范围子句一起使用表示仅在一定范围内 对满足条件的记录进行操作。 如: USE STUDENT LIST FOR age>20
④WHILE<条件>: 从当前记录开始, 在指定范围内,对记录逐条进行比较,<条件>成立,继续执行命令,一旦<条件>不成立,立即停止执行。(记录指针指在第一个<条件>为.F.的记录上,不论其后有无符合条件的记录) 如:USE STUDENT LIST WHILE age>20
一、VFP的数据类型 字符型(Character):存储文本信息 数值型(Numeric):存储整数或小数,精度:16位 浮点型(Float):等价于数值型(出于兼容性考虑) 日期型(Date):如09/22/2007 日期时间型(Date Time):09/22/200717:12PM 双精度型(Double):其精度>>数值型、浮点型,主 要用于存储科学计算中的天文数字
货币型(Currency):存储货币类数值,该类型至 货币型(Currency):存储货币类数值,该类型至 多只能保留小数点后4位 整型(Integer):不包括小数、效率更高。其范围 为:-2147483647~+2147483647。 逻辑型(Logic):为布尔值——真(.T. ,.Y.) 或 假 (.F. ,.N.) 备注型(Memo):用于保存大量文字信息,长度 不限,但在字段定义时默认为4位。 通用型(General):保存OLE对象,如:图象、声音 等,字段定义时默认为4位。
二、常量与变量 1、常量 ① 数值型 ② 货币型 ③ 字符型 ④ 日期型 ⑤ 日期时间型 ⑥ 逻辑型
以下是各类型常量需注意的问题: ① 数值型 数值型可以用科学记数法表示, 如:5.678E12 ② 货币型 采用4位小数
③ 字符型 字符常量也称为字符串; 可用“ ” 、‘ ’或 [ ] 引用,三者等价 (“ ” 、‘ ’、[ ]称为定界符)
传统的日期格式 ④ 日期型 严格的日期格式 a.传统的日期格式(受日期格式设置命令的影响) mm/dd/yy 或 mm/dd/yyyy 如:03/15/90 b.严格的日期格式(可在任何情况下使用) {^yyyy-mm-dd} 如: {^1990-03-15}
日期格式设置命令: (1)是否显示世纪值(即年份用4位显示) SET CENTURY ON|OFF (2)指定显示日期值时使用的分隔符 SET MARK TO [<日期分隔符>] 如: SET MARK TO “—” (3)设置日期显示格式 SET DATE [TO] AMERICAN | ANSI | BRITISH | FRENCH |ITALIAN |GERMEN |JAPAN |USA |MDY | DMY |YMD
(4)是否检查日期格式 SET STRICTDATE TO [ 0 |1 | 2 ] 0 —不进行严格的日期格式检查 1 —进行严格的日期格式检查(默认) 2 —进行严格的日期格式检查,并且对 CTOD()和CTOT()的格式也有效。
⑤ 日期时间型 格式: {<日期>,<时间>} ⑥ 逻辑型 逻辑真: . T. . t . 或 . Y. . y . 逻辑假: . F. . f . 或 . N. . n .
字段变量 内存变量 2、变量 字段变量——存在于库表文件中,为多值变量。 内存变量——存在于内存中,是在程序或命令 状态时用于存放数据的临时工作单元。 它独立于表文件,为单值变量。
(1)字段变量 同一字段取值不同,不唯一,故为多值变量
(2)内存变量 ① 简单内存变量 建立内存变量的方法: a.变量名=值 (例:A=100) b.STORE 值 TO 变量名 (例:STORE 100 TO A) 注:STORE和=均可用于赋值,但是用STORE可以给多个内存变量赋值,如STORE 100 TO A,B,C
那么内存变量到底是什么数据类型,是否需要 事先定义呢? N=100 (N为数值型) N=“ABC” (N为字符型)
注: a.内存变量无须预先定义,区分类型,其类型 由赋予变量的值的类型决定。 b.字段变量与内存变量同名,字段变量优先。 要引用内存变量,则在其前加M-> 。 如:在STU.DBF中有一记录“姓名”字段值为“王青” 又在命令窗口建立了一个“姓名”内存变量: 姓名=李涛 ?姓名 ?M->姓名 c.内存、字段变量由字符、数字或下划线组成, 以字符或下划线开头,字段长度: 自由表中<=10,数据库表中<=128
② 数组 一系列数据值的有序集合。 数组定义及赋值: a.定义:DIMENSION/DECLARE <数组名1> [,<数组名2>,……] DIMENSION A(5),B(2,3)
b、赋值 A(3)=25 A=30 B(2,1)=5 B(5)= .T.
3、其它与变量、表达式有关的常用命令 (1)表达式的显示:?| ?? (2)内存变量的显示 LIST MEMORY [LIKE<通配符>] DISPLAY MEMORY [LIKE<通配符>] (3)内存变量的清除 clear memory ——所有 release <内存变量> ——所有或部分
三、表达式 —— 由常、变量和函数通过特定的运算符 连接起来的式子 表达式的五种类型: 数值表达式 字符表达式 日期时间表达式 关系表达式 逻辑表达式
1、数值表达式<expN> 算术运算符 优先级 高 ( ) ** 、^ * 、/ % 低+ 、- ——幂运算(如3**3=3^3=27) ——取模(如26%8=2,类似于求余)
2、字符表达式 <expC> 字符运算符: +—— 字串简单连接 -——两串相并,去掉前一字串尾端的空格, 加至最后 $——字串比较,<expc1>$<expc2>,若<expc1> 包含于<expc2>,则表达式值为.T.(真), 否则为 .F.(假) 。
例1: 比较 ‘ABC└┘’+ ‘DEF└┘’和 ‘ABC└┘’–‘DEF└┘’ 例2: mem1=”Visual” mem2=”Foxpro” mem3=mem1+mem2 ?mem1$mem3 .T.
课堂思考: 请写出’ABC└┘’+’DEF└┘’+’G’及’ABC└┘’-’DEF└┘’+’G’ 的值
3、日期时间表达式 +、 - 例:{^2002-09-21}+100 {^2002-09-21}- {^2002-05-13} (两日期相差天数)
4、关系表达式 格式:<表达式1> <关系运算符> <表达式2> 操作数类型须一致,结果为逻辑值。 关系运算符: < 、<= 、> 、>= 、<> 、= 、== 、$ 注意:精确比较(==)与模糊比较(=)
5、逻辑表达式 优先级 高 !,NOT AND 低OR 例如:a=.t. ?not a
不同类型运算符的优先级: 优先级 高数值、字符、日期时间表达式 关系表达式 低 逻辑表达式
四、常用函数 标准函数:近300个 用户自定义函数 函数
函数的格式: 函数名 ( 参数 ) 表明做了什么运算 运算对象
五类常用函数: 数值函数 字符处理函数 日期类函数 数据类型转换函数 测试函数
1、数值函数 几个常用数值函数: (1)求绝对值 ABS 如: ?ABS(-5) y=ABS(5-3) (2)求符号 SIGN 如: ? SIGN (-8) 5 y=2 -1
3 (3)求平方根 SQRT 如: ? SQRT (9) (4)求圆周率 PI 如: ? PI () (5)求整数 INT 如: ? INT (3.14) ? INT (-3.14) 3.14 3 -3
(6)四舍五入 ROUND 如: ? ROUND (2.345, 2) ? ROUND (234.345, -1) (7)求余 MOD 如: ? MOD (10, 3) ? MOD (10, -3) 2.35 230 1 -2
(7)求最大、最小值 如: ? MAX (2, 12) ? MIN (10, -3) 12 -3
2、字符处理函数 几个常用字符处理函数: (1)求字串长度 LEN 如: X=‘abc’ ?LEN (X) (2)生成空格字符串 SPACE 如: Y= SPACE (4) 3 Y=“ ” (Y为4个字符 的空格串)
(3)大小写转换 UPPER 小写 大写 LOWER ? UPPER(‘ IBM pc/xt ’) ? LOWER(INTERNET) IBM PC/XT internet
Y=‘ test’ (4)删除空格 ① TRIM——去右端空格 如: Y= TRIM (‘ test ’) 去左端空格和去两端空格函数? (5)取子串 ① LEFT——求左方子串 如: NS= LEFT(‘DATABASE’,4) ?NS 求右方子串和任意子串函数? LTRIM、ALLTRIM DATA RIGHT、SUBSTR
(6)求子串出现次数 OCCURS 如: S= ’abcaabcd‘ ? OCCURS(’a‘,S ) (7)求子串位置 AT 如: ?AT(“TER”,“COMPUTER” ) 3 6
3、日期类函数 几个常用字符处理函数: (1)求系统日期和时间 ① DATE()——求当前日期 ② TIME()——求当前时间 ③ DATETIME ()——求当前日期时间 如: ?DATE() 注:()中不需带参数
(2)求年、月、日 ① YEAR()——求日期的年份 ② MONTH()——求日期的月份 ③ DAY ()——求日期的日子 如: ?YEAR ( DATE()) 2009