VFP命令、函数及程序语句大全(1)
VFP命令是一种实现对数据库系统进行操作的动词或短语。VFP命令可在VFP命令窗口中单独运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。
¨ VFP常用命令分类表
¨ 命令格式
一般格式:
命令动词[FROM<源文件>][TO<目标文件>][记录范围][FOR/WHILE<条件>]
[FIELDS<字段名表>]
(1)APPEND FROM C:RSDA.DBF FOR 基本工资>100 FIELDS 编号,姓名,职称,基本工资。
(2)COUNT FOR 职称=“高工”TO GG 统计高工的记录数到内存变量GG。
¨ 命令格式规则
一.表结构的操作
1.创建表结构
命令1:CREATE [路径][表名]
例子:在A盘创建GZ2数据表。
CREATE A:GZ2
命令2:CREATE [新表名] FROM [旧表名]
例子:在A盘由GZ1创建GZ3数据表。
CREATE A:GZ3 FROM A:GZ1
命令3:COPY STRUCTRUE TO [路径][表名]
例子:在D盘生成一个与正在使用的表结构相同的新表文件MY
COPY STRUCTRUE TO D:MY
2.表结构的显示
命令:LIST STRUCTURE
DISPLAY STRUCTURE
例子:显示当前数据表在结构。
LIST STRUCTURE
3.表结构的修改
命令:MODIFY STRUCTURE
作用:显示表文件结构,并允许修改此表的结构
说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。
例子:修改当前数据表的结构。
MODIFY STRUCTURE
二.表文件的打开和关闭
1.打开
命令:USE 表名 [INDEX 索引文件名] [EXCLUSIVE]
例子:打开A盘GZ1数据表。
USE A:GZ1
例子:以独占方式打开当前表文件XX
USE XX EXCLUSIVE
2.关闭
命令:USE
例子:关闭当前打开的表。
USE
三.记录指针的定位
1. 绝对定位
命令:GO[TO] n|TOP|BOTTOM
说明: n定位到第n条记录,TOP定位到最上面一条记录,BOTTOM定位到最下端一条记录
2.相对定位
命令:SKIP [+|-]n
说明:它以当前记录为基准前移(-)或后移(+)n个记录,不选任选项,则默认记录指针后移一条记录。
四.表数据的添加
1.记录的追加
命令:APPEND [BLANK]
例子:向当前数据表尾部追加记录。
APPEND
例子:向当前数据表尾部追加一条空记录。
APPEND BLANK
2.记录的插入
命令:INSERT [BLANK][BEFORE]
例子:在当前记录后插入一条空记录。
INSERT BLANK
例子:在第3条记录前插入一条记录。
GO 3
INSERT BEFORE
3.用复制方法建新表记录
命令:COPY TO 新表名 [范围][FIELDS 字段表][FOR 条件]
例子:把当前表中“应发合计”大于1000元的记录复制到新数据表GZ2中。
COPY TO A:GZ2 FOR 应发合计>1000
4.从其他表取数据
命令:APPEND FROM 表名 [FOR 条件]
例子:把GZ1表中“应发合计”大于1000的记录复制到当前的表后面。
APPEND FROM GZ1 FOR 应发合计>1000
五.表记录的显示
1.浏览显示
命令:BROWSE [FIELDS 字段表][FOR 条件]
例子:显示当前表中“应发合计”大于1000元的记录的职工编号、姓名、应发合计三个字段。
BROWSE FIELDS 职工编号,姓名,应发合计 FOR 应发合计>1000
说明:此命令的结果以浏览窗口的形式出现,具有修改功能。
2.显示输出
命令:LIST|DISPLAY [OFF] [<范围>] [FIELDS] <表达式表> [WHILE <条件>] [FOR <条件>] [TO PRINT|TO FILE <文件>]
说明:(1)命令带OFF参数表示不显示记录号
(2)范围指定对哪些记录进行操作,(范围包括:RECORD n :第几号记录;NEXT n: 当前记录开始的几个记录;REST: 自当前记录开始至文件末尾的所有记录;ALL 所有的记录。不选范围则隐含范围为ALL)
(3)字段名表指在结果中需要出现的字段名,字段名与字段名之间用逗号分隔。不带时指显示所有字段。
(4)WHILE后跟条件,FOR后面也跟条件,区别是,WHILE后的条件如果满足,便停止查找;FOR后的条件查找所有满足条件的记录。
(5)TO PRINT和TO FILE <文件>分别表示将显示结果在打印机上打印出来和将显示结果输出到文件。
(6)DISPLAY命令在显示记录满屏后,要求用户按任意键继续显示,并且在该命令中,如果省略范围仅显示当前记录。LIST不分屏,如果省略范围显示所有记录。
六.修改记录内容
1. 编辑或修改的特定记录
命令:CHANG|EDIT [范围][[FIELDS]字段表][FOR 条件] [WHILE <条件>]
例子:修改第五条记录
CHANGE|EDIT RECORD 5
2.成批自动替换记录
命令:REPLACE [范围] 字段 WITH 表达式 [FOR 条件]
例子:计算各记录“应发合计”字段的值。
REPLACE ALL 应发合计 WITH 职务工资+岗位津贴+保留奖金+保留津贴
七.删除记录
1.逻辑删除
命令:DELETE [范围]FOR 条件
2.物理删除
命令: PACK (删除有删除标记的记录)
ZAP (删除所有记录)
例子:删除“职工编号”空白的记录。
DELETE ALL FOR 职工编号=“”
PACK
八.数据表排序
1.物理排序,生成一个新的表文件。
命令:SORT TO 新表名 ON 字段名 [/A][/D] [范围][FOR 条件]
例子:把当前表中记录按“应发合计”从大到小重新排序。
SORT TO A:GZ3 ON 应发合计 /D
2.逻辑排序,生成一个索引文件。
(一)标准索引文件:IDX
命令:
新建索引:INDEX ON 字段名表达式 TO 索引文件名
同时打开:USE 表名 INDEX 索引文件名
之后打开:SET INDEX TO 索引文件名
重新索引:INDEX ON 字段名表达式 TO 索引文件名
关闭索引:SET INDEX TO
例子:对当前数据表以“应发合计”从大到小排列。
INDEX ON -应发合计 TO GZ
(二)复合索引文件:CDX
命令:
新建索引:INDEX ON 字段名 TAG 标记 [ASCEDING|DESCENDING]
同时打开:USE 表名 ORDER [TAG] 标记
改变索引:SET ORDER TO [TAG] 标记
重新索引:INDEX ON 字段名 TAG 标记
关闭索引:SET ORDER TO
删除索引:DELETE TAG 标记
例子:对当前数据表以“应发合计”从大到小排列。
INDEX ON 应发合计 TAG HJ DESC
九.查找记录
1.顺序查找
命令:LOCATE FOR 条件 [范围]
继续查找命令:CONTINUE
例子:在当前的表中查找姓“张”的记录。
LOCATE FOR 姓名=“张”
2.索引查找
说明:根据当前的索引来查找记录。在使用命令前先要按准备查找的字段建立索引或排序
命令:FIND 字符串
SEEK 表达式
用FOUND()检查找到否
例子:在当前的表中查找姓“张”的记录。
FIND 张
SEEK “张”
3.查找函数
说明: 在使用命令前先要按准备查找的字段建立索引或排序
函数:SEEK()
例子:在当前的表中查找姓“张”的记录。
SEEK(“张”)
十.统计数据表记录个数
命令:COUNT [范围][FOR 条件][TO 变量]
例子:统计当前表中“应发合计”大于1000元的人数。
COUNT FOR 应发合计>1000
十一.数据表数值字段的求和
命令:SUM [范围][FOR 条件][TO 变量]
例子:统计当前表中“应发合计”字段的总和。
SUM 应发合计
十二.算术平均值的计算
命令:AVERAGE [范围][FOR 条件][TO 变量]
例子:统计当前表中“应发合计”字段的平均值。
AVERAGE 应发合计
十三.多功能计算
命令:CALCULATE 表达式 [范围][FOR 条件][TO 变量]
例子:分别统计当前表中“应发合计”字段的人数、总和、平均值。
CALCULATE CNT(应发合计),SUM(应发合计),AVG(应发合计)
VFP命令、函数及程序语句大全(2)
一.数值运算函数
二.字符中操作函数
三.日期和时间函数
VFP命令、函数及程序语句大全(3)
图 5.4 VFP程序总体结构
9.INPUT
意义:输入各种类型数据赋给内存变量
格式:INPUT “提示信息” TO 内存变量名
本命令允许输入字符类型、数值类型、日期类型、逻辑类型等不同类型的数据,要求输入数据是字符类型时,数据两端要加定界符,例“张平”;输入数据是日期类型时,要按{MM/DD/YY}或设定的格式,例{12/21/00};逻辑类型按.T.、.F.格式。
用户输入还可以是包括变量名及函数在内的表达式,但变量必须是己赋值的,表达式是可以计算出确定值的。用户输入完后回车表示输入结束。
例:INPUT“请输入初始日期:” TO D1
屏幕上显示:“请输入初始日期:”,光标在此句之后。用户可输入{05/10/96}。
此时用户如果执行命令:?D1
屏幕上将显示:05/10/96
10.ACCEPT
意义:输入字符串赋给变量。
格式:ACCEPT[“提示内容”]TO内存变量名
该命令和INPUT命令区别有两点:
.输入数据均被视为字符类型。
.输入数据两端不需加定界符,如加了定界符,定界符被视作字符串的一部分。
11.WAIT
意义:接收单个字符赋给变量,或中断程序,按任意键后继续。
格式:WAIT [“提示信息”] TO 内存变量名
该命令与ACCEPT命令不同点在于只接收从键盘输入的一个字符,用户输入一个字符后无须回车。该命令也可用在VFP表单程序的某个事件中, 用于中断该事件的执行,让屏幕显示程序运行的中间结果,按某个键或单击鼠标后再继续执行。
12.GET
意义:格式化输入数据,给内存变量赋值或修改表中当前记录字段内容。
格式:@ 行号,列号 GET 内存变量名或字段名
该命令可用于对内存变量赋值,也可用于修改当前打开表中当前记录中指定字段的内容。如对内存变量赋值且省略DEFAULT选项,在使用此语句时,必须已对该内存变量赋值。否则按此选项中表达式对内存变量初始化。
本命令执行后只显示内存变量或字段当前值,要到执行命令“READ”时,此语句方被激活,程序停止执行,等待用户从键盘输入数据,直待回车后才继续执行。行号、列号为当前窗口中字符行和列的位置号。行号与列号允许是小数。
FUNCTION选项用于对输入内容限制或变化。功能代码:
A:只允许输入内容由字母字符组成,包括不允许空格和标点符号。
B:数值数据左对齐,默认格式为右对齐。
I:文本居中对齐。
J:文本右对齐,默认为左对齐。
Sn:限定文本框中字符个数为n。如S20。
T:去掉前导和后缀空格。
Z:当数值数据值为0时显示空格。
!:把字母字符转换为大写。
PICTURE选项用于限定输入数据的字符类型及大小。功能代码例:
A:该位为字母或数字
L:只允许逻辑数据。
N:该位为字符或数字。
X:任何字符。
I:该位为数字,或数值数据中的符号。
-:标明小数点位置。
,:用逗号分隔左右数字。
!:将小写字母转换为大写字符。
例:@3,10 GET x1 DEFAULT 0 PICTURE“9999.99”
此时在屏幕第3行的第10列位置显示方框,其中内容为DEFAULT规定的初始值0.00,如再发出命令:READ, 将光标落在尚未激活的第一个方框上等待输入,只能输入数字和符号,且整数部分不多于4位,小数部分不多于2位,否则将提示“请您重新输入”。
RANGE、VALID两个选项用于保证数据完整性,输入数据必须在预定范围内,满足条件表达式要求时,才可完成赋值操作。本语句还有设置字体、字形和颜色的选项。
在VFP中, 综合上述人机交互命令尤其是@… GET命令的功能和特性,设计了文本框、编辑框等类和控件,便之应用更加方便、简单,我们将在下一章中介绍。
程序运行结果一般由输出语句使其显示在屏幕上或输出到其他地方,输出语句可将数据输出到屏幕上显示也可传送给打印机或传送存入到其他文件中。屏幕显示语句在VFP中一般用在主控程序或调试程序时使用。在表单程序中使用各种控件、消息框代替它们。
13.?|??
意义:计算<表达式表>所指定的各表达式的值,并显示在屏幕上。
格式:?表达式1[,表达式2]…
用?时,从下一行第一列起显示结果。用??时,从当前行当前列起显示结果。
14.SAY
意义:格式化输出语句。
格式:@行号,列号 SAY表达式[FUNCTION功能代码] [PICTURE格式代码][SIZE高度,宽度]
有关选项的意义与@…GET命令相似,此外还有关于字体,颜色设置的选项。若发出有SET DEVICE TO PRINTER命令,输出到打印机,否则输出至屏幕上显示。
本语句常与@… GET语句合用,合用时,行号、列号指SAY内容显示所在行、列号,GET变量内容框将放置在SAY内容之后。
1.IF…ENDIF命令
图5.5 分支结构程序流程图
图5.6 主控模块程序流程图
图5.7 CASE结构程序流程图
图5.8 DO WHILE…ENDDO结构程序流程图
图5.9 指针做循环变量开始指向第一条时的DO WHILE结构流程图
图5.10 指针做循环变量开始指向满足条件记录的第一条时
的DO WHILE结构流程图
图5.11 DO UNTIL结构程序流程图
6. 显示文件目录命令
程序的概念
命令执行方式:通过命令菜单或直接在命令窗口输命令来执行,执行的结果显示在屏幕上。
程序执行方式:以程序的方式来执行。
程序是能够完成一定任务的命令的有序集合,这组命令存放在程序文件(*.prg)中,执行程序时,系统按一定的次序自动执行包含在程序文件中的命令。
程序的特点
可以利用编辑器,方便地输入、修改和保存程序。
可以利用多种方式、多次运行程序。
可以在一个程序中调用另一个程序。
程序的基本要求
正确性,能实现算法的各个步骤,逻辑上正确,对输入产生的错误有检测措施。
通用性,不能只解决一个问题,还考虑解决一类问题。
高效率性,编写执行时间短,占用存储空间少的程序。
可维护性,程序应易读、易懂、易修改。
安全性,必须确保安全、可靠。
程序文件的建立
在项目管理器中和菜单中建立
用命令方式:modify command <文件名>
程序的执行
从“ 程序” 菜单中选择“ 运行”
命令方式:do < 文件名>
<文件名>中如果没有指定扩展名,系统将按下列顺序寻找程序文件并执行:
.exe–>.app( 应用程序)–>.fxp( 编译程序)–>.prg
当程序文件被执行时,文件中包含的命令将被依次执行,直到所有的命令被执行完毕中,或者执行到以下命令:
cancel ( 终止程序执行,返回命令窗口)
do( 转去执行另一个程序)
return( 结束当前程序,返回到上级程序,若无上级程序则返回到命令窗口)
quit( 退出VFP 系统,返回到操作系统)
程序结构
(1)每个程序都必须有1个文件名,文件名由字符、数字或下划线组成,第一个字符必须是字母或汉字,程序扩展名为.PRG
(2)程序由若干行数据库命令组成,每行最多写2048个字符,1行只能写1条命令,若把一个命令写成若干行,需在该命令的第1行及中间各行的行尾写“;”号,但最后一行不写。
(3)注释行由“*”开头,用以说明程序的名称、功能及其他需要说明的问题,“*”是注释命令,是非执行语句,可以写在程序任一位置。
(4)以“set”开头的命令为环境设置命令,一般出现在可执行语句的前面。
(5)每行程序的后部可以写由“&&”号引导的注释。
(6)“return”命令是返回命令,表示程序结束。
编写程序的步骤
举例:编写一个简单的程序:给出一个整数,判断是奇数还是偶数。
(1)分析任务,确定方法;
(2)分解任务,描述算法;
(3)编写程序,认真检查;
(4)上机调试,纠正错误
流程图
流程图符号的使用规则:
流程线的方向是从左到右,自上而下,非标准流向的流程线要用箭头表示。
流程线就尽量避免交叉。
流程图符号内的文字一律从左到右,自上而下书写。
流程图符号的注释应写在符号右侧。
出入口处的连接符应使用相同名称,表示把它们连接起来。
子程序、过程和自定义函数
模块化:按适当的原则把一个情况复杂、规模较大的程序系统划分为一个个较小的、功能相关而又相对独立的模块的过程。
模块:一个在结构上相对独立的程序段。可以是子程序、过程或自定义函数。
子程序的基本概念
子程序:总被其它程序调用的,一般不单独运行的一个程序段。
子程序与主程序的关系:是一种调用和被调用的关系。主程序是能调用其他子程序,而不被其他程序调用的程序,凡能被调用的程序都称为子程序。程序中至少应有一个主程序,可以有一个或若干个子程序。
子程序的使用
①使用模块化程序设计方法编写程序时,把各个功能划分成若干个功能子模块,把子模块写成一个子程序。
②需要反复调用的情况下,可以写成一个子程序,以节省存储空间。
编写子程序
调用子程序命令格式:
do <子程序名>[ WITH<参数表>]
子程序返回命令
return [ to master ]
表示返回到上一级子程序或主程序。带参数to master表示无论在哪级子程序上,均立即返回主程序。
例1、 对任意给的正整数A、B、C,编写程序计算S=A!+(3/5)B!+(C!/2)
调试子程序
联合调试:当主程序和子程序分别编辑完成之后,直接运行主程序。若主程序或子程序有错,再进行编辑、调试、重新运行,直到输出正确结果为止。
单独调试:编辑一个模块,调试一个模块,各个模块都调试成功后,加入主程序联调。
例2、根据数据库student.dbf编写一个菜单程序main.prg,完成对数据库查询程序cx.prg和删除程序sc.prg的调用
过程与过程文件
过程是一段程序,它与子程序不同之处在于,子程序是一个独立文件,而过程是过程文件的一个组成部分,可以把多个过程写在一个过程文件中。
过程的结构:
procedure <过程名>
<过程体>
return [to master/to <程序名>]
过程名由用户定义,供调用过程时使用,过程体是一个语句序列,是过程的核心部分,选择to <程序名>表示返回到“程序名”指定的程序。
过程文件的结构
procedure <过程名1>
<过程体1>
return [to master/to <程序名>]
procedure <过程名2>
<过程体2>
return [to master/to <程序名>]
……
procedure <过程名n>
<过程体n>
return [to master/to <程序名>]
过程文件的调用
在主程序中,调用过程前,首先要打开过程文件。
命令格式:set proc to <过程文件名>
调用后,要关闭过程文件。
命令格式:set procedure to 或
close procedure
过程的调用
格式:do <过程名>
例3、 根据数据库student.dbf编写一个菜单程序gczxc.prg,用过程形式完成对数据库查询程序cx.prg和删除程序sc.prg的调用。
自定义函数命令
命令格式:(1)function <函数名>
(2) return <表达式>
基本格式:
function<函数名>
parameters <参数表>
<语句序列>
return <表达式>
主程序与自定义函数的组织形式:
举例计算组合数的值
编写K!的函数。
作业
1、从键盘输入五个数组,每组有六个数据,分别用子程序、过程、自定义函数的方法,输出每组数的最大值和最小值。
2、用子程序、过程、自定义函数三种不同形式对student.dbf数据库编写一个菜单程序:
系统主菜单
1……追加记录
2……修改记录
3……插入记录
4……删除记录
5……输出记录
6……退 出


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/179273.html