VFP命令的使用

  • 格式:doc
  • 大小:139.00 KB
  • 文档页数:8

VFP命令的使用

一.实验目的

1.掌握VFP命令的格式。

2.掌握常用的VFP命令。

3.能够举一反三使用其他命令。

二.实验原理

1、VFP6.0常用命令结构

一般格式:

命令动词 [范围子句] [FIELDS] [FOR] [WHILE]

其中:命令短语格式说明中常用的符号:

< > : 表示必须的,由用户键入

[ ] : 表示可选择项

| 或 / : 表示在二项中选择其中一项

(1)命令动词:表示要执行的操作;不可缺省,位于一条命令的开始。当命令动词多于4个字母时可以简写为前面4个字母。

(2)命令短语:或称为子句,用于说明命令的操作对象、操作结果和操作条件等信息,常用的命令短语有“范围子句”、“FIELDS子句”、“FOR子句”、“WHILE子句”等。

a.范围子句:用来指定命令要操作的记录范围,有四种范围选择:

ALL :表示对数据表中所有记录进行指定的操作。

NEXT :表示对从当前记录开始的共n条记录进行指定的操作。

RECORD :表示仅对记录号为n的记录进行指定的操作。

REST :表示对从当前记录开始,直到最后一条记录为止的所有记录进行指定的操作。

缺省范围子句时,有的命令其默认范围是全部记录(例如,LIST、COUNT、SUM等命令默认范围是ALL);有的命令其默认范围是当前记录(例如,DISPLAY、DELETE、REPLACE等命令默认是当前记录)。

例1:list

display

b.FIELDS 子句

“FIELDS”用来选择要操作的字段,相当于关系运算中的投影操作。

关键词“FIELDS”有时可以缺省。

例2:list fields 学号,姓名

List 学号,姓名

c.FOR 子句

:是一个逻辑表达式或关系表达式,其值为.T.或.F.。用来对范围子句所确定的范围内的记录进行筛选,相当于关系运算中的选择运算。

注意:当范围子句缺省但带有FOR 子句时,则默认范围是ALL。

例3:list for 性别=’男’

d.WHILE 子句

WHILE 子句也是对记录进行筛选。

FOR 与WHILE 二者的区别: a.FOR子句是对范围内满足条件的所有记录进行操作;WHILE子句是当操作范围内遇到第一条不满足条件的记录时就停止操作,而不管范围内是否还有其它满足条件的记录。

b.当范围子句缺省但带有FOR 子句时,则默认范围是ALL。

c.当范围子句缺省但带有WHILE 子句时,则默认范围当前记录。

例4:list while 性别=’男’

List for 性别=’男’

(3)关于命令格式注意事项

①一条命令必须以命令动词开始;

②命令动词可缩写为前四个字母;

③各个命令子句的先后次序可以任意,但必须用空格分隔各个子句。

例5:LIST ALL FIELDS 学号,课程代号,平时成绩 FOR 平时成绩>80

④一条命令最长为8192个字符,用“;”结尾表示命令有续行。

e.命令中的字符不区分大小写。

2、数据表内容的显示、复制与修改

(1)表中数据的显示

a.LIST命令

格式:LIST [范围][[FIELDS]][FOR] [WHILE] [OFF]

功能:以列表方式显示表中记录,每列均有标题。

其中:[OFF]指明不显示每条记录的记录号,默认范围为ALL。

b.DISPLAY命令

功能与LIST相似,不同之处是:

①DISPLAY命令每当显示屏满时能暂停显示;

②当没有指定和条件短语时,DISPLAY命令默认范围为当前记录,而LIST命令默认为ALL;

③如果不带〈范围〉,但带有条件短语,DISPLAY命令针对整个表;如果带有〈范围〉,则针对指定的范围。

④当命令范围短语为ALL或带有条件短语时,执行命令后记录指针位于文件尾,EOF()返回.T.

(2)表文件的复制

格式:

COPY TO [][[FIELDS]][FOR][WHILE][]

功能:本命令用于将当前打开的表文件全部或部分复制到一个由指定文件名,由指定文件类型的新的文件中。

①若省略,则复制生成新的.DBF文件,否则复制生成指定类型的文件。

有许多种, SDF(标准数据格式文件)、XLS(电子表格文件)等。

②若不带、FOR和WHILE短语时,则复制所有记录。

③FIELDS短语用于指定新文件中所包含的字段。省略FIELDS短语,则复制所

有的字段。

例6.将xs.dbf中所有女生记录复制到xs1.dbf中。

使用以下命令序列:

USE xs COPY TO xs1.dbf for 性别=“女”

(3)表内容的修改

格式:replace [范围] [字段名1 with 表达式1] [,字段名2 with 表达式2]…[for 条件] [while 条件]

功能:替换式修改表中记录的内容。

a.若不带[范围]和条件,则只替换当前记录;

b.若不带[范围]但带条件,则针对整个表;

c.若带[范围],则针对指定的范围;

d.表达式与字段名的数据类型必须相同。

完成实验内容第2题。

3、数据表记录的定位

表中每个记录都有一个记录号。当打开表时,记录指针指向第一条记录。

(1)记录定位命令:GOTO命令和SKIP命令。

a.GOTO命令(绝对定位)

GOTO命令三种用法格式:

格式1:GO|GOTO T0P|B0TT0M

格式2:GO|GOTO

或:

功能:将记录指针直接定位到指定的记录上。

b.skip 命令(相对定位)

格式:SKIP []

功能:将记录指针从当前位置向前或向后移过条记录。

①如果记录指针已经移过文件的最后一个记录,即记录指针指向文件尾,则RECNO()函数返回的值(当前的记录号)等于文件中总记录数目加1,EOF()函数返回逻辑真(.T.)值。

②如果记录指针反方向移过文件的首记录,则RECNO()函数返回的值为1,BOF()函数返回逻辑真(.T.)值。

数据表文件的最小记录号是1,最大记录号是表中的记录数目+1。

函数recno():求当前记录号。

函数bof() :测试记录指针是否位于第一条记录的前面。

函数eof() :测试记录指针是否位于最后一条记录的后面。

函数reccount():当前工作区中打开的表中的记录总数。

完成实验内容第3题。

(2)Locate命令

格式:locate [范围] [for 条件] [while 条件]

功能:在数据表文件中顺序查找满足条件的第一条记录。

说明:①当查找到满足条件的第一条记录时,将该记录定位为当前记录。

②若没找到满足条件的记录,则记录指针指向文件尾或[范围]的最后一条记录。

(3)continue命令

与locate命令配合使用,用来继续向下查找,若找到满足条件的记录,则将该记录定位为当前记录。 完成实验内容第4题。

4、数据的统计

(1)count命令

格式:count [范围] [for 条件] [while 条件] [to 内存变量]

功能:统计指定范围内满足条件的记录个数。

说明: ①[to 内存变量],结果保存在内存变量中。

(2)average命令

格式:average [范围] 字段名表 [for 条件] [while 条件] [to 内存变量表]

功能:计算指定范围内满足条件的数值型字段的平均值。

说明:①[to 内存变量表],结果保存在各内存变量中。

(3)sum命令

格式:sum [范围] 字段名表 [for 条件] [while 条件] [to 内存变量表]

功能:计算指定范围内满足条件的数值型字段的总和。

说明:[to 内存变量表],结果保存在各内存变量中。

(4)total命令

格式:total on 关键字段 to 文件名 [fields 字段名表] [范围] [for 条件] [while 条件]

功能:对由[fields 字段名表]指定的数值型字段,按照关键字段分组求和,每组形成一个记录存放在新数据表中。

说明:①非数值型字段和没有包含在“fields 字段名表”中的数值型字段,取该组中第一个记录的值。

②要分组求和的数据表文件必须是按索引或分类过。

③“fields 字段名表”指定求和的数值型字段,而非投影运算。新数据表中总是包含原表中的全部字段。

完成实验内容第5,6,7题。

三. 实验内容

使用实验所用自由表xs.dbf,cj.dbf完成下面1-7题,xs.dbf结构和内容如表3-1所示。cj.dbf结构和内容如表3-2所示。

表3-1 xs.dbf的结构和内容

学号(C8) 姓名(C8) 性别(C2) 出生日期(D) 入校总分(N, 3, 0) 团员(L)

sh030001 李红梅 女 01/12/1986 487 F

sh030002 张 海 男 11/10/1985 498 T

sh030003 刘一铭 男 12/21/1984 510 T

sh030004 金 鑫 男 02/22/1987 575 T

sh030005 高小天 女 02/28/1986 490 F

sh030006 杨晨曦 男 10/04/1986 536 F

sh030007 杜 明 男 07/23/1985 545 T