《VFP命令的使用.doc》由会员分享,可在线阅读,更多相关《VFP命令的使用.doc(8页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、.VFP命令的使用一.实验目的1.掌握VFP命令的格式。2.掌握常用的VFP命令。3.能够举一反三使用其他命令。二.实验原理1、VFP6.0常用命令结构一般格式: 命令动词 范围子句 FIELDS FOR WHILE其中:命令短语格式说明中常用的符号: : 表示必须的,由用户键入 : 表示可选择项 | 或 / : 表示在二项中选择其中一项(1)命令动词:表示要执行的操作;不可缺省,位于一条命令的开始。当命令动词多于4个字母时可以简写为前面4个字母。(2)命令短语:或称为子句,用于说明命令的操作对象、操作结果和操作条件等信息,常用的命令短语有“范围子句”、“FIELDS子句”、“FOR子句”、“
2、WHILE子句”等。 a.范围子句:用来指定命令要操作的记录范围,有四种范围选择: ALL :表示对数据表中所有记录进行指定的操作。 NEXT :表示对从当前记录开始的共n条记录进行指定的操作。 RECORD :表示仅对记录号为n的记录进行指定的操作。 REST :表示对从当前记录开始,直到最后一条记录为止的所有记录进行指定的操作。缺省范围子句时,有的命令其默认范围是全部记录(例如,LIST、COUNT、SUM等命令默认范围是ALL);有的命令其默认范围是当前记录(例如,DISPLAY、DELETE、REPLACE等命令默认是当前记录)。例1:list display b.FIELDS 子句
3、“FIELDS”用来选择要操作的字段,相当于关系运算中的投影操作。关键词“FIELDS”有时可以缺省。例2:list fields 学号,姓名 List 学号,姓名 c.FOR 子句:是一个逻辑表达式或关系表达式,其值为.T.或.F.。用来对范围子句所确定的范围内的记录进行筛选,相当于关系运算中的选择运算。 注意:当范围子句缺省但带有FOR 子句时,则默认范围是ALL。例3:list for 性别=男d.WHILE 子句 WHILE 子句也是对记录进行筛选。 FOR 与WHILE 二者的区别: a.FOR子句是对范围内满足条件的所有记录进行操作;WHILE子句是当操作范围内遇到第一条不满足条件
4、的记录时就停止操作,而不管范围内是否还有其它满足条件的记录。 b.当范围子句缺省但带有FOR 子句时,则默认范围是ALL。 c.当范围子句缺省但带有WHILE 子句时,则默认范围当前记录。例4:list while 性别=男 List for 性别=男(3) 关于命令格式注意事项 一条命令必须以命令动词开始; 命令动词可缩写为前四个字母; 各个命令子句的先后次序可以任意,但必须用空格分隔各个子句。例5:LIST ALL FIELDS 学号,课程代号,平时成绩 FOR 平时成绩80 一条命令最长为8192个字符,用“;”结尾表示命令有续行。 e.命令中的字符不区分大小写。2、数据表内容的显示、复
5、制与修改(1)表中数据的显示 a.LIST命令 格式:LIST 范围FIELDSFOR WHILEOFF 功能:以列表方式显示表中记录,每列均有标题。 其中:OFF指明不显示每条记录的记录号,默认范围为ALL。 b.DISPLAY命令 功能与LIST相似,不同之处是: DISPLAY命令每当显示屏满时能暂停显示; 当没有指定和条件短语时,DISPLAY命令默认范围为当前记录,而LIST命令默认为ALL; 如果不带范围,但带有条件短语,DISPLAY命令针对整个表;如果带有范围,则针对指定的范围。 当命令范围短语为ALL或带有条件短语时,执行命令后记录指针位于文件尾,EOF()返回.T. (2)
6、表文件的复制格式: COPY TO FIELDSFORWHILE 功能:本命令用于将当前打开的表文件全部或部分复制到一个由指定文件名,由指定文件类型的新的文件中。若省略,则复制生成新的.DBF文件,否则复制生成指定类型的文件。有许多种, SDF(标准数据格式文件)、XLS(电子表格文件)等。若不带、FOR和WHILE短语时,则复制所有记录。FIELDS短语用于指定新文件中所包含的字段。省略FIELDS短语,则复制所有的字段。例6.将xs.dbf中所有女生记录复制到xs1.dbf中。使用以下命令序列: USE xs COPY TO xs1.dbf for 性别=“女”(3)表内容的修改格式:re
7、place 范围 字段名1 with 表达式1 ,字段名2 with 表达式2for 条件 while 条件功能:替换式修改表中记录的内容。a.若不带范围和条件,则只替换当前记录; b.若不带范围但带条件,则针对整个表; c.若带范围,则针对指定的范围; d.表达式与字段名的数据类型必须相同。完成实验内容第2题。3、数据表记录的定位表中每个记录都有一个记录号。当打开表时,记录指针指向第一条记录。(1)记录定位命令:GOTO命令和SKIP命令。 aGOTO命令(绝对定位) GOTO命令三种用法格式: 格式1:GO|GOTO T0P|B0TT0M 格式2:GO|GOTO 或: 功能:将记录指针直接
8、定位到指定的记录上。 b.skip 命令(相对定位)格式:SKIP 功能:将记录指针从当前位置向前或向后移过条记录。如果记录指针已经移过文件的最后一个记录,即记录指针指向文件尾,则RECNO()函数返回的值(当前的记录号)等于文件中总记录数目加1,EOF()函数返回逻辑真(.T.)值。如果记录指针反方向移过文件的首记录,则RECNO()函数返回的值为1,BOF()函数返回逻辑真(.T.)值。数据表文件的最小记录号是1,最大记录号是表中的记录数目+1。函数recno():求当前记录号。 函数bof() :测试记录指针是否位于第一条记录的前面。 函数eof() :测试记录指针是否位于最后一条记录的
9、后面。 函数reccount():当前工作区中打开的表中的记录总数。完成实验内容第3题。(2)Locate命令 格式:locate 范围 for 条件while 条件 功能:在数据表文件中顺序查找满足条件的第一条记录。 说明:当查找到满足条件的第一条记录时,将该记录定位为当前记录。 若没找到满足条件的记录,则记录指针指向文件尾或范围的最后一条记录。(3)continue命令与locate命令配合使用,用来继续向下查找,若找到满足条件的记录,则将该记录定位为当前记录。 完成实验内容第4题。4、 数据的统计(1) count命令格式:count 范围 for 条件 while 条件 to 内存变量
10、 功能:统计指定范围内满足条件的记录个数。 说明: to 内存变量,结果保存在内存变量中。 (2)average命令格式:average 范围 字段名表 for 条件 while 条件 to 内存变量表 功能:计算指定范围内满足条件的数值型字段的平均值。 说明:to 内存变量表,结果保存在各内存变量中。 (3)sum命令格式:sum 范围 字段名表 for 条件 while 条件 to 内存变量表 功能:计算指定范围内满足条件的数值型字段的总和。 说明:to 内存变量表,结果保存在各内存变量中。 (4)total命令格式:total on 关键字段 to 文件名 fields 字段名表 范围
11、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的结构和内容学号
12、(C8)姓名(C8)性别(C2)出生日期(D)入校总分(N, 3, 0)团员(L)sh030001李红梅女01/12/1986487Fsh030002张 海男11/10/1985498Tsh030003刘一铭男12/21/1984510Tsh030004金 鑫男02/22/1987575Tsh030005高小天女02/28/1986490Fsh030006杨晨曦男10/04/1986536Fsh030007杜 明男07/23/1985545Tsh030008颜冰雪女04/22/1985465Fsh030009曾 星女01/09/1984432Tsh030010江子开男10/18/1983416
13、F表3-2 cj.dbf的结构和内容学号(C8)语文(N,6,2)数学(N,6,2)政治(N,6,2)英语(N,6,2)平均分(N,6,2)总分(N,6,2)sh03000175876565sh03000265988558sh03000385856954sh03000452748469sh03000552527554sh03000674654650sh03000785528542sh03000865655135sh03000967854087sh030010687460901. 将xs.dbf中所有女生记录复制到xs1.dbf中。2.2. 将表xs1.dbf中的总分都加20。3. 分析并验证以
14、下命令序列的执行结果。 USE xs2 ? RECCOUNT( ) GO TOP DISP SKIP -1 ? RECNO( ), BOF( ), EOF( ) GO 6 ? RECNO( ), BOF( ), EOF( ) GO BOTTOM DISP ? RECNO( ), BOF( ), EOF( ) SKIP ? RECNO( ), BOF( ), EOF( )SET ORDER TO TAG出生日期 GO TOP DISP GO BOTTOM DISP SET ORDER TO GO TOP DISP GO BOTTOM DISP COPY TO xs3 USE xs3 ? RECCOUNT( ) ZAP ? RECCOUNT( ) USE3. 在xs2.dbf中,用LOCATE(顺序查询)实现逐条查询出性别为女的学生名单。4.5. 将xs.dbf中的所有记录复制到xs3.dbf中,然后汇总xs3.dbf中性别为男及性别为女的学生的入校总分之和,汇总的结果保存在xs33.dbf中。6.7.8. 在cj.dbf中,计算并填入各学生的总分与平均分。9.7. 将cj.dbf的所有记录复制到cj1.dbf中,不包括总分与平均分两个字段。