第 3 章 vfp 简介
DESCRIPTION
第 3 章 VFP 简介. 一、 VFP 的界面组成 二、 VFP 的操作方式 1、命令操作方式 2、菜单操作方式 3、工具操作方式 4、程序操作方式. 交互. 命令操作方式 — 指在交互窗口键入命令即可操纵数据库。 如:删除一条记录,键入 DELETE 优点:能直接使用系统的各种命令和函数 菜单操作方式 — 系统将若干命令做成菜单,用户可通过菜单选择 来操纵数据库。 工具操作方式 - PowerPoint PPT PresentationTRANSCRIPT
第 3 章 VFP 简介
一、 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
第 4 章 VFP 基础知识
一、 VFP 的数据类型
字符型( Character ):存储文本信息 数值型( Numeric ):存储整数或小数,精度: 16 位 浮点型( Float ):等价于数值型(出于兼容性考虑) 日期型( Date ):如 09/22/2007 日 期 时 间 型 ( Date Time ): 09/22/200717 :
12PM 双精度型( Double ):其精度 >> 数值型、浮点型,主 要用于存储科学计算中的天文数字
货币型( 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
常用日期格式
短语 格式 短语 格式AMERICAN mm/dd/yy GERMEN dd.mm.yy
USA mm-dd-yy JAPAN yy/mm/dd
ANSI yy.mm.dd MDY mm/dd/yy
BRITISH /FRENCH dd/mm/yy DMY dd/mm/yy
ITALIAN dd-mm-yy YMD yy/mm/dd
( 4 )是否检查日期格式 SET STRICTDATE TO [ 0 | 1 | 2 ]
0 — 不进行严格的日期格式检查 1 — 进行严格的日期格式检查(默认) 2 — 进行严格的日期格式检查,并且对 CTOD ()和 CTOT ()的格式也有效。
⑤ 日期时间型 格式: {< 日期 > , < 时间 >}
⑥ 逻辑型 逻辑真: . T. . t . 或 . Y. . y .
逻辑假: . F. . f . 或 . N. . n .
2 、变量
字段变量——存在于库表文件中,为多值变量。 内存变量——存在于内存中,是在程序或命令 状态时用于存放数据的临时工作单元。 它独立于表文件,为单值变量。
字段变量
内存变量
( 1 )字段变量
同一字段取值不同,不唯一,故为多值变量
① 简单内存变量
建立内存变量的方法: a.变量名 =值 (例: A=100 ) b . STORE 值 TO 变量名 (例: STORE 100
TO A )
注: STORE 和 =均可用于赋值,但是用 STORE 可以给多 个 内 存 变 量赋值 , 如 STORE 100 TO A , B , C
( 2 )内存变量
那么内存变量到底是什么数据类型,是否需要事先定义呢?
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=273**3=3^3=27 ))
———— 取模(如取模(如 26%8=226%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 )
55
y=2y=2
-1-1
( 3 )求平方根 SQRT
如: ? SQRT ( 9 )
( 4 )求圆周率 PI
如: ? PI ()
( 5 )求整数 INT
如: ? INT ( 3.14 ) ? INT ( -3.14 )
3
-3
3
3.14
( 6 )四舍五入 ROUND 如: ? ROUND ( 2.345, 2 ) ? ROUND ( 234.345, -1 )
( 7 )求余 MOD 如: ? MOD ( 10, 3 ) ? MOD ( 10, -3 )
2.352.35
230230
11
-2-2
( 7 )求最大、最小值
如: ? MAX ( 2, 12 )
? MIN ( 10, -3 ) -3-3
1212
2 、字符处理函数 几个常用字符处理函数:
( 1 )求字串长度 LEN 如: X=‘abc’ ? LEN ( X )
( 2 )生成空格字符串 SPACE 如: Y= SPACE ( 4 )
33
Y=“ ” (YY=“ ” (Y 为为 44 个字符个字符 的空格串的空格串 ))
( 3 )大小写转换
UPPER
小写 大写 LOWER
? UPPER(‘ IBM pc/xt ’)
? LOWER(INTERNET)
IBM PC/XTIBM PC/XT
internetinternet
( 4 )删除空格 ① TRIM—— 去右端空格 如: Y= TRIM (‘ test ’ )
去左端空格和去两端空格函数 ?
( 5 )取子串 ① LEFT—— 求左方子串 如: NS= LEFT (‘ DATABASE’ , 4 ) ? NS
求右方子串和任意子串函数 ?
Y=‘ test’Y=‘ test’
DATADATA
LTRIM 、 ALLTRIM
RIGHT 、 SUBSTR
( 6 )求子串出现次数 OCCURS 如: S= ’abcaabcd‘ ? OCCURS (’ a‘ , S )
( 7 )求子串位置 AT 如: ? AT (“ TER” ,“ COMPUTER” )
33
66
3 、日期类函数 几个常用字符处理函数:
( 1 )求系统日期和时间 ① DATE ()——求当前日期 ② TIME ()——求当前时间 ③ DATETIME ()——求当前日期时间
如: ? DATE () 注:()中不需带参数
( 2 )求年、月、日
① YEAR ()——求日期的年份 ② MONTH ()——求日期的月份 ③ DAY ()——求日期的日子
如: ? YEAR ( DATE ()) 20092009
( 3 )求时、分、秒
① HOUR ()——求日期时间的小时 ② MINUTE ()——求日期时间的分钟 ③ SEC ()——求日期时间的秒
如: ? HOUR ( DATETIME ())
4 、数据类型转换函数
( 1 )数值型
日期型
ASCII码
VAL STR
CTODDTOC
ASCCHR
字符型
部分函数格式:
STR(< 数值型表达式 >[,< 总长度 >][,< 小数位度 >])
VAL ( < 字符型表达式 > ) DTOC ( < 日期型表达式 > )
具体用法见书中例子
( 2 )宏替换函数 &
格式: & < 字符型变量 >[.] 功能:代换一个字符型变量的内容。若
函 数后跟的不是空格,则加 .
如: ACCEPT‘请输入姓名:’ TO XM
(请输入姓名:陈刚) ?‘欢迎 & XM 使用工资管理系统’
5 、测试函数 几个常用测试函数:
( 1 )值域测试 BETWEEN 如: ? BETWEEN ( 5 , 1 , 10 )
( 2 )空值测试 ISNULL 如: X= .NULL. ? ISNULL ( X )
.T..T.
.T..T.
( 3 )是否为空测试 EMPTY 如: X=0 Y=“ ” ? EMPTY ( X ) , EMPTY ( Y )
( 4 )数据类型测试 VARTYPE 如: X= 10 ? VARTYPE ( X )
.T..T.
NN
( 5 )表文件尾测试 EOF
( 6 )表文件首测试 BOF
何谓表文件首、尾?假设一个表 4 条记录 , 我们看看表文件首尾的位置 :
11223344
文件首文件首
文件尾文件尾
文件首在文件首在第第 11 条记录之前条记录之前,文件尾在,文件尾在最后最后 11 条记录之后条记录之后。。
什么是记录指针和当前记录?当前记录——记录指针指向的记录;
注:表文件刚打开时,指针总是指向第一条记录 (即首记录为当前记录);
( 7 )记录号测试 RECNO
如: USE STU
? RECNO ()
( 8 )记录个数测试 RECCOUNT
如:假设 STU 中有 40 条记录 USE STU
? RECCOUNT ()
11
4040
( 9 )条件测试 IIF
格式: IIF ( < 逻辑表达式 > , < 表达式 1> , < 表达
式 2> ) 功能: < 逻辑表达式 > 值为 .T.——返回表达式 1 的值, 为 .F.——返回表达式 2 的值。 例: x=9 ? IIF ( x<10 , 1 , 2 )
11
作用:该函数在某些情况下可以替代 IF……ELSE……ENDIF 语句
如:
Y= IIF ( x<10 , 1 , 2 )<=><=>IF x<10IF x<10 Y=1Y=1ELSE Y=2 ELSE Y=2 ENDIFENDIF
其他函数:
系统环境函数 OS () 给出当前使用的操作系统名SYS ( 5 ) 给出当前默认驱动器名SYS ( 17 ) 给出所用的 CPU 名
显示信息函数 MESSAGEBOXMESSAGEBOX ()()
例:
MESSAGEBOX ‘( 你好!’)MESSAGEBOX ‘( 操作有误!’, 2+16+0 ,‘提示
信息’)
对话类型及含义 对话类型值 对话框按钮
0 “确定”按钮1 “确定”、“取消”按钮2 “终止”、 “重试”、 “忽略”按钮3 “ 是”、 “否”、 “取消”按钮
5 “重试”、 “取消”按钮 对话类型值 图标
16 “终止”图标32 “问号”图标48 “感叹号”图标64 “ 信息”图标
对话类型值 缺省按钮0 第 1 个按钮256 第 2 个按钮512 第 3 个按钮
4 “ 是”、 “否”按钮
Messagebox() 函数的返回值取决于用户所选择的按钮,返回值情况如下表所示:
按钮 返回值确定 1
取消 2
终止 3
重试 4
忽略 5
是 6
否 7
作业:在屏幕上显示当天日期格式 1 :今天日期: 03/06/09格式 2 :今天日期: 2009 年 3 月 6 日
上机 : NB=1234.56 ? STR(NB,7,1) ? STR(NB,6,2) ? STR(NB,7,2) ? STR(NB,6,3) ? STR(NB,7,3) ? STR(NB,5,1) ? STR(NB,8,1) ? STR(NB,5,2) ? STR(NB,8,2) ? STR(NB,3) ? STR(NB,8,3) ? STR(NB,4) ? STR(NB,6,1) ? STR(NB,5)