vfp命令语句等说明总结.docx
- 文档编号:10104510
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:28
- 大小:47.33KB
vfp命令语句等说明总结.docx
《vfp命令语句等说明总结.docx》由会员分享,可在线阅读,更多相关《vfp命令语句等说明总结.docx(28页珍藏版)》请在冰点文库上搜索。
vfp命令语句等说明总结
VFP命令、函数及程序语句大全
VFP提供一些简单的程序设计语言命令,包括赋值语句、控制语句、设置命令等,我们可根据某种功能的需要,利用这些命令及数据库操作的有关命令构成语句,分行存在文件中(称为命令文件,以.PRG为扩展名,在项目管理器中标为“程序”)或一些对象的过程或事件处理程序中。
如被调用,系统将一条条顺序执行各行命令,如遇到控制语句(IF,DO,CALL,FOR…等),依据控制语句的指定,转移到指定语句再一条条顺序执行。
这些命令书写时,每条语句应在一行中写完,如不能写完,可用分号“;”结束,表示下一行继续。
两条语句不能写在一行上。
每条语句中命令字及选项中保留字大多数可只书写前四个字符。
一般一个简单的VFP应用系统由若干模块组成,各自完成一定的功能,总的系统用一个总控模块去控制,通过它调用子模块,层层调用以实现全系统的功能。
这种结构如图5.4所示。
这种方式便于设计、调试,保证程序的正确性,也容易实现模块共亭,实现软件重用,提高程序设计效率。
主模块可由主封面表单、主命令文件和主菜单文件构成;各个模块可由过程、自定义函数、表单、表单集、应用程序或子菜单等构成。
一个表单或一个表单集中可有一到多个用户界面,可设置一到多个命令按钮及其他程序控件,用户可利用按钮及程序控件,产生特定的消息触发执行一个程序,完成一个功能。
应用程序是对一个模块编译后的.APP执行文件,“过程”是由命令组成的程序,以RETURN语句结束,它可为另一个程序所调用,调用执行时遇到RETURN语句将返回其调用程序。
图5.4VFP程序总体结构
一.变量赋值与显示语句
在项目管理器中选“代码→程序→新建”或在命令框利用命令MODIFYCOMMAND建立命令文件。
1.MODIFYCOMMAND
意义:
创建命令文件。
命令格式:
MODIFYCOMMAND文件名
例如:
MODIFYCOMMANDPROC1
执行此命令后,将进入全屏幕编辑状态。
如原已建立了该文件proc1,将调出该文件在屏幕上显示,用户可对之修改。
如是新文件,则用户可利用全屏幕编辑键,输入自己的程序。
新文件将自动加上扩展名.PRG。
2.DO
意义:
执行命令文件程序,有三种方法:
①在项目管理器中选“代码→程序→选择程序名→运行”。
②在主菜单中选“程序→运行→输入(选择)程序名→运行”。
③在程序中或命令窗日中使用DO命令。
命令格式:
DO程序名[WITH表达式表]
程序名可以是上述方式建立的命令文件(.PRG文件)、可执行文件(.EXE文件)、应用程序(.APP文件),及对.PRG文件编译后的文件(.FXP文件)。
如调用DO命令时不带扩展名,则按.EXE文件、.APP文件、.FXP文件、.PRG文件的顺序查找同名程序并执行之。
例如:
DOPROC1
此外,程序名还可能是菜单程序,调用时必须带扩展名(.MPR)。
例如,有菜单程序MAIN.MPR,则可如下调出执行:
DOMAIN.MPR
程序名还可以是事件名或过程名。
其中表达式表由多个表达式组成,用逗号分开,在执行时首先计算各表达式的值,并带入被调程序,被调程序第一句应是LPARAMETERS形参表语句,形参表是以逗号分隔的多个内存变量名,其个数应等于调用时的表达式的个数,执行时,首先用调用语句中各表达式的值对应给它们赋值。
例如:
主程序中:
DOPROC1WITH“AB”,21
被调程序:
LPARAMETERSM1,X0
执行时,首先完成赋值:
M1=“AB”;X0=21,再往下执行。
当使用DO运行一个程序时,包含在其中的命令一直执行,直到下列某一事件发生。
遇到RETURN语句,返回到调用程序DO命令的下一句,遇到了CANCEL命令,返回VFP命令状态。
遇到QUIT命令退出程序并退出VFP;到达文件尾回到调用前状态;再遇到另一个DO命令,将转人新程序执行。
3.PUBLIC
意义:
设置全局性内存变量命令。
格式:
PUBLIC变量名1[,变量名2]…
在不同程序或过程或事件中,同名内存变量的值不一定相同,如要将一个程序(过程、事件)中变量的值传到另一程序(过程、事件)中,可应用上述命令将它定义成全局变量。
4.PRIVATE
意义:
设置局部变量的命令。
格式:
PRIVATE[ALL[LIKE∣EXCEPT通配符]∣内存变量表]
其中选项意义:
ALL将所有内存变量说明为局部性变量,ALL[LIKE∣EXCEPT通配符]将变量名能与通配符相匹配的内存变量说明为局部性变量。
“ALLEXCEPT通配符”将除了能与通配符相匹配的变量名之外的内存变量说明为局部性变量。
在程序中,为了一个程序的运行结果不影响另一个程序的执行,不希望同名变量将值从一个程序带到另一个程序而造成干扰。
为此,可将该变量定义成局部性变量。
5.DIMENSION
意义:
定义内存变量数组命令,VFP中可定义一维或二维数组。
格式:
DIMENSION数组名(数字表达式1[,数字表达式2])[,数组名2(数字表达式1[,数字表达式2])]…
每个数组的每个元素都可单独使用,如同一个内存变量,称为下标变量,下标起始值为1。
例如,DIMENSIONARRAY1(8,20),X1(30)定义了两个数组,数组名分别为ARRAY1和X1,前一个数组共有20×8=160个元素:
ARRAY1(l,l)、ARRAY1(l,2)……ARRAY1(l,20),ARRAY1(2,1)…ARRAY1(8,20)。
对各元素也可用单下标取用其值,如用ARRAY1(l),ARRAY1
(2)…ARRAY1(160)也可访问该数组各元素,与前面双下标表示形式一一对应。
6.PUBLICARRAY
意义:
定义全局性内存变量数组。
格式:
PUBLICARRAY数组名(数字表达式1[,数字表达式2])[,数组名2(数字表达式1[,数字表达式2])]…
7.=
意义:
赋值语句。
将表达式的值赋值给一个内存变量。
对变量赋值后,该变量类型也即确定为表达式返回值的类型。
对一个变量可重复赋值,也可改变变量的类型。
但为了保证程序的清晰和结构完整,建议在一个系统中每个变量名应有确定的意义和数据类型。
8.STORE
意义:
同时对多个变量赋值命令。
格式:
STORE表达式TO变量1[,变量2]…
在程序运行时常要求用户输入控制参数或数据,实现此功能语句我们称为人机对话语句。
在程序中如插入人机对话语句,用户可借助键盘输入参数或控制量赋值给变量。
控制程序走向,或用于不同数据处理。
在程序执行到这类语句时,将停止运行,在屏幕上显示命令中附注的提示信息,同时等待用户从键盘输入数据,赋给所指定的变量。
完成赋值之后再接着运行下一条语句。
在VFP中这类语句可在主控程序中或在调试程序时使用,在表单程序中使用文本框等各种控件及消息框代替它们。
9.INPUT
意义:
输入各种类型数据赋给内存变量
格式:
INPUT“提示信息”TO内存变量名
本命令允许输入字符类型、数值类型、日期类型、逻辑类型等不同类型的数据,要求输入数据是字符类型时,数据两端要加定界符,例“张平”;输入数据是日期类型时,要按{MM/DD/YY}或设定的格式,例{12/21/00};逻辑类型按.T.、.F.格式。
用户输入还可以是包括变量名及函数在内的表达式,但变量必须是己赋值的,表达式是可以计算出确定值的。
用户输入完后回车表示输入结束。
例:
INPUT“请输入初始日期:
”TOD1
屏幕上显示:
“请输入初始日期:
”,光标在此句之后。
用户可输入{05/10/96}。
此时用户如果执行命令:
?
D1
屏幕上将显示:
05/10/96
10.ACCEPT
意义:
输入字符串赋给变量。
格式:
ACCEPT[“提示内容”]TO内存变量名
该命令和INPUT命令区别有两点:
.输入数据均被视为字符类型。
.输入数据两端不需加定界符,如加了定界符,定界符被视作字符串的一部分。
11.WAIT
意义:
接收单个字符赋给变量,或中断程序,按任意键后继续。
格式:
WAIT[“提示信息”]TO内存变量名
该命令与ACCEPT命令不同点在于只接收从键盘输入的一个字符,用户输入一个字符后无须回车。
该命令也可用在VFP表单程序的某个事件中,用于中断该事件的执行,让屏幕显示程序运行的中间结果,按某个键或单击鼠标后再继续执行。
12.GET
意义:
格式化输入数据,给内存变量赋值或修改表中当前记录字段内容。
格式:
@行号,列号GET内存变量名或字段名
[FUNCTION功能代码][PICTURE格式代码][DEFAULT表达式][MESSAGE提示信息]
[RANGE输入值范围下限,输入值范围上限][SIZE文本框高度,文本框宽度][VALID条件表达式]
该命令可用于对内存变量赋值,也可用于修改当前打开表中当前记录中指定字段的内容。
如对内存变量赋值且省略DEFAULT选项,在使用此语句时,必须已对该内存变量赋值。
否则按此选项中表达式对内存变量初始化。
本命令执行后只显示内存变量或字段当前值,要到执行命令“READ”时,此语句方被激活,程序停止执行,等待用户从键盘输入数据,直待回车后才继续执行。
行号、列号为当前窗口中字符行和列的位置号。
行号与列号允许是小数。
FUNCTION选项用于对输入内容限制或变化。
功能代码:
A:
只允许输入内容由字母字符组成,包括不允许空格和标点符号。
B:
数值数据左对齐,默认格式为右对齐。
I:
文本居中对齐。
J:
文本右对齐,默认为左对齐。
Sn:
限定文本框中字符个数为n。
如S20。
T:
去掉前导和后缀空格。
Z:
当数值数据值为0时显示空格。
!
:
把字母字符转换为大写。
PICTURE选项用于限定输入数据的字符类型及大小。
功能代码例:
A:
该位为字母或数字
L:
只允许逻辑数据。
N:
该位为字符或数字。
X:
任何字符。
I:
该位为数字,或数值数据中的符号。
-:
标明小数点位置。
,:
用逗号分隔左右数字。
!
:
将小写字母转换为大写字符。
例:
@3,10GETx1DEFAULT0PICTURE“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命令相似,此外还有关于字体,颜色设置的选项。
若发出有SETDEVICETOPRINTER命令,输出到打印机,否则输出至屏幕上显示。
本语句常与@…GET语句合用,合用时,行号、列号指SAY内容显示所在行、列号,GET变量内容框将放置在SAY内容之后。
二.程序控制命令
1.IF…ENDIF命令
意义:
分支条件语句,根据逻辑表达式的值,有选择的执行一组命令。
根据条件表达式的值是.T.还是.F.控制程序流向。
格式:
IF条件表达式
语句序列1
[ELSE
语句序列2]
ENDIF
IF条件表达式语句是条件语句的开始,ENDIF语句是条件语句的终止。
语句序列是若干条顺序执行的语句。
执行时首先计算条件表达式的值,如结果为“真”(.T.)则执行语句序列l,执行完后退出该语句。
如条件表达式不满足,且有ELSE语句和语句序列2,则执行语句序列2。
其程序流程图如图5.5所示。
图5.5分支结构程序流程图
图5.6主控模块程序流程图
在一个分支控制语句块中可以嵌套另一个IF…ENDIF语句块。
【例5.7】主控模块的程序
程序流程图如图5.6所示。
编写程序清单如下:
CLEAR&&清屏幕
@5,27SAY“设备管理系统”
@7,36SAY“主菜单”
@10,21PROMPT“1.各种查询、屏幕修改”+SPAC(16)
@11,21PROMPT“2.数据编辑”+SPAC(26)
@12,21PROMPT“3.资产统计”+SPAC(26)
@13,21PROMPT“4.报表打印”+SPAC(26)
@14,21PROMPT“5.系统维护”+SPAC(26)
MENUTOm_choic &&等待用户输入
IFLASTKEY()=27 &&按Esc键返回VFP
RETURN
ENDIF
IFm_choic=1
DOsbcx_sc.spr
ELSE
IFm_choic=2
DOsjbj_sc.spr
ELSE
IFm_choic=3
DOzctj_sc.spr
ELSE
IFm_choic=4
DObbdy_sc.spr
ELSE
IFm_choic=5
DOxtwh_pg
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
RETURN
2.CASE
意义:
分情况语句,当求解一个问题存在多种情况,如要求对不同选择执行不同的语句序列,可采用分情况语句。
该语句一句中列出许多语句成分,每个语句成分给出一个条件表达式,每次只根据具体条件找出第一个条件表达式值为.T.的语句成分,执行该成分语句中的语句序列后退出该语句。
命令格式:
DOCASE
CASE条件表达式1
语句序列1
CASE条件表达式2
语句序列2
…
CASE条件表达式n
语句序列n
[OTHERWISE
语句序列n+1]
ENDCASE
执行该语句时,系统逐一计算条件表达式1的值,条件表达式2的值…只要有一个条件表达式的值为.T.则执行其后语句序列,执行它后退出本分情况语句。
如到条件表达式n的值仍均为.F.又有OTHERWISE成分,则执行语句序列n+l,其程序流程图如图5.7所示。
仍如上面主控程序的例子,程序可设计为:
CLEAR&&清屏幕
@5,27SAY“设备管理系统”
@7,36SAY“主菜单”
@10,21PROMPT“1.各种查询、屏幕修改”+SPAC(16)
@11,21PROMPT“2.数据编辑”+SPAC(26)
@12,21PROMPT“3.资产统计”+SPAC(26)
@13,21PROMPT“4.明细报表打印”+SPAC(22)
@14,21PROMPT“5.系统维护”+SPAC(26)
MENUTOm_choic&&等待用户输入
IFLASTKEY()=27&&按Esc键返回VFP
RETURN
ENDIF
DOCASE
CASEm_choic=1
DOsbcx_sc.spr
CASEm_choic=2
DOsjbj_sc.spr
CASEm_choic=3
DOzctj_sc.spr
CASEm_choic=4
DObbdy_sc.spr
CASEm_choic=5
DOxtwh_pg
ENDCASE
RETURN
图5.7CASE结构程序流程图
从上面两段程序可见,对于同一个问题,用DOCASE…ENDCASE语句比IF…ENDIF语句要简洁了并且逻辑关系清晰,因此不容易出错。
在分情况语句中也可嵌入分支条件语句及分情况。
它本身也可嵌入到分支条件语句中去使用。
在对数据表中数据时,常常每条记录被处理的过程是一样的,处理语句也就大体相同,如果表中有多少记录就写多少条语句是十分困难的,为避免重复书写,可使用循环。
3.DOWHILE….ENDDO
意义:
循环语句,可使多次重复执行同一组语句。
格式:
DOWHILE条件表达式
语句序列
[LOOP]
[EXIT]
ENDDO
其中“DOWHILE条件表达式”语句称为循环起始语句,“ENDDO”语句称为循环结束语句,进入此命令时首先检查条件表达式的值是否为真(.T.)。
如果是真,则执行语句序列,然后再判断条件表达式的结果,如仍为真,则继续下去。
如果为假(.F.)则退出循环,执行ENDDO后面的语句。
如果进入本命令一开始,条件表达式的值为假,则语句序列一次也不执行,就直接转入执行ENDDO后面的语句。
其中LOOP意义为结束本次循环,返回循环体开始。
EXIT意义为结束循环,转入执行ENDDO后面的语句。
LOOP语句和EXIT语句一般用在分支条件语句中,因而语句格式为:
DOWHILE条件表达式1
语句序列1
[IF条件表达式2
LOOP
ELSE
语句序列2
ENDIF]
[IF条件表达式3
EXIT
ELSE
语句序列3
ENDIF]
ENDDO
其程序流程图如图5.8所示。
在使用时必须保证经有限次循环后条件表达式1应变为假或条件表达式3的值应变为真,使退出循环。
否则就可能成为死循环。
在条件表达式中的变量称循环变量,在数据库中循环变量可能是内存变量,也可能是表中的指针。
必须注意在每次循环过后,循环变量的值都要改变并且是向最终使条件表达式1的值为假或条件表达式3的值变真的方向变化,否则就无法满足前述退出条件。
在VFP中有两类特殊用法。
(1)循环变量是指针。
该用法中有两种结构①指针首先指向第一条的DOWHILE结构如图5.9所示。
②指向满足条件记录的第一条的DOWHILE结构如图5.10所示。
图5.8DOWHILE…ENDDO结构程序流程图
图5.9指针做循环变量开始指向第一条时的DOWHILE结构流程图
图5.10指针做循环变量开始指向满足条件记录的第一条时
的DOWHILE结构流程图
格式1:
图5.9实现的语句。
USE(表名)
SELECT工作区别名
GOTOP
DOWHILENOTEOF()
语句序列
SKIP
ENDDO
在本格式中,循环变量是表中指针,首先让指针指向表的第一条记录,如果不是文件尾,则执行语句序列之后让指针下移一条,再返回判断指针是否指向文件尾。
这样一直继续下去直到指针指到最后一条记录的后面,循环结束。
【例5.8】在学生表中有少数学生更换了班级,现要求在屏幕上一屏一屏地显示每个学生的数据,并提问是否修改班级名称,如回答“Y”,则提供修改框。
SETTALKOFF
USE学生
KEY=“Y”
GOTOP
DOWHILENOTEOF()
@3,10SAY“姓名:
”+姓名
@5,10SAY“班级:
”+班级
@7,10SAY“出生日期:
”+DTOC(出生日期)
@9,10SAY“是否修改,Y/N?
’GETKEY
READ
IFUPPER(KEY)=“Y”
@11,10SAY“请输入改后班级名称”GET班级
READ
ENDIF
SKIP
ENDDO
USE
SETTALKON
格式2:
如果只按某个条件查看记录,则可用查找语句开始。
图5.10实现语句:
LOCATEFOR条件表达式
DOWHILENOTEOF()
语句序列
CONTINUE
ENDDO
例5.8中如只查99级学生,显示其姓名则:
LOCATEFOR“99”$班级
DOWHILENOTEOF()
?
姓名
CONTINUE
ENDDO
(2)当于DOUNTIL的循环结构。
有些循环要在执行部分语句之后再根据一个条件表达式判断是否结束,此时循环条件可用常量.T.,见图5.11所示。
图5.11DOUNTIL结构程序流程图
语句格式:
DOWHILE.T.
语句序列
IF条件表达式
EXIT
ENDIF
ENDDO
【例5.9】求编写学生表录入新数据的程序,每次录入一条记录,之后提问是否继续,如回答不是“Y”,就停止录入。
SETTALKOFF
USE学生
KEY=“”
DOWHILE.T.
APPENDBLANK
@3,10SAY“姓名:
”GET姓名
@5,10SAY“班级:
”GET班级
@7,10SAY“出生日期:
”GET出生日期
READ
@9,10SAY“否继续?
Y/N?
”GETKEY
READ
IFUPPER(KEY)<>“Y”
EXIT
ENDIF
ENDDO
USE
SETTALKON
此语句由用户输入Y或N控制程序结束。
上述第一、二两种格式可以用等价的SCAN循环取代。
4.SCAN…ENDSCAN循环语句
意义:
在数据表中循环检查或处理一条条记录。
命令格式一:
SCAN
语句序列
ENDSCAN
此句等价于前述格式1的语句。
命令格式二:
SCANFOR条件表达式
语句序列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vfp 命令 语句 说明 总结
![提示](https://static.bingdoc.com/images/bang_tan.gif)