VFP命令、函数及程序语句大全(1)VFP命令是一种实现对数据库系统进行操作的动词或短语。VFP命令可在VFP命令窗口中单独运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。VFP常用命令分类表类别命令建立文件类CREATE,MODIFY,COPY,SAVE等数据库操作类USE,CLOSE,COPY,MODIFYSTRUCTURE等数据编辑类BROWSE,EDIT,CHANG,REPLACE,UPDATE等记录指针操作类GOTO,LOCATE,SEEK,FIND,SKIP等记录操作类APPEND,DELETE,INSERT等数据显示类BROWSE,LIST,DISPLAY等数据统计类SUM,COUNT,AVERAGE,TOTAL等存变量操作类ACCEPT,INPUT,READ,SAVE等程序控制类DO,DOWHILE…ENDDO,IF…ENDIF等系统设置类SETTALK,SETDEFAULTTO等命令格式VFP命令一般由命令动词和控制短语构成。一般格式:命令动词[FROM源文件][TO目标文件][记录范围][FOR/WHILE条件][FIELDS字段名表][]表示可选,表示必选,/表示或选例如:(1)APPENDFROMC:\RSDA.DBFFOR基本工资100FIELDS编号,姓名,职称,基本工资。从C:\RSDA.DBF表中把基本工资大于100元的记录添加到当前表添加字段为:编号,姓名,职称,基本工资。(2)COUNTFOR职称=高工TOGG统计高工的记录数到内存变量GG。控制短语规定了对数据库操作的限制条件:1.指向输入输出目标FROM/TOAPPENDFROM,COPYFILETO目标文件2.限制记录范围(SCOPE)ALL所有记录NEXTn本记录后的第几个记录RECORD1第1个记录REST当前记录之后所有记录3.选择字段FIELDS字段表选择输入/输出的字段。4.限制条件FOR/WHILE条件FOR基本工资100.AND.基本工资200命令格式规则命令的行为单位,一行书写不完,在未尾加上“;”第二行接着写。必须以命令动词开头,动词后的短语顺序不限。命令中大小写字母等效。命令动词和关键字可以只写前4个字符。不得用命令动词或关键字作为自定义变量、函数、程序名。一.表结构的操作1.创建表结构命令1:CREATE[路径][表名]例子:在A盘创建GZ2数据表。CREATEA:GZ2命令2:CREATE[新表名]FROM[旧表名]例子:在A盘由GZ1创建GZ3数据表。CREATEA:GZ3FROMA:GZ1命令3:COPYSTRUCTRUETO[路径][表名]例子:在D盘生成一个与正在使用的表结构相同的新表文件MYCOPYSTRUCTRUETOD:\MY2.表结构的显示命令:LISTSTRUCTUREDISPLAYSTRUCTURE例子:显示当前数据表在结构。LISTSTRUCTURE3.表结构的修改命令:MODIFYSTRUCTURE作用:显示表文件结构,并允许修改此表的结构说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。例子:修改当前数据表的结构。MODIFYSTRUCTURE二.表文件的打开和关闭1.打开命令:USE表名[INDEX索引文件名][EXCLUSIVE]例子:打开A盘GZ1数据表。USEA:\GZ1例子:以独占方式打开当前表文件XXUSEXXEXCLUSIVE2.关闭命令:USE例子:关闭当前打开的表。USE三.记录指针的定位1.绝对定位命令:GO[TO]n|TOP|BOTTOM说明:n定位到第n条记录,TOP定位到最上面一条记录,BOTTOM定位到最下端一条记录2.相对定位命令:SKIP[+|-]n说明:它以当前记录为基准前移(-)或后移(+)n个记录,不选任选项,则默认记录指针后移一条记录。四.表数据的添加1.记录的追加命令:APPEND[BLANK]例子:向当前数据表尾部追加记录。APPEND例子:向当前数据表尾部追加一条空记录。APPENDBLANK2.记录的插入命令:INSERT[BLANK][BEFORE]例子:在当前记录后插入一条空记录。INSERTBLANK例子:在第3条记录前插入一条记录。GO3INSERTBEFORE3.用复制方法建新表记录命令:COPYTO新表名[范围][FIELDS字段表][FOR条件]例子:把当前表中“应发合计”大于1000元的记录复制到新数据表GZ2中。COPYTOA:GZ2FOR应发合计10004.从其他表取数据命令:APPENDFROM表名[FOR条件]例子:把GZ1表中“应发合计”大于1000的记录复制到当前的表后面。APPENDFROMGZ1FOR应发合计1000五.表记录的显示1.浏览显示命令:BROWSE[FIELDS字段表][FOR条件]例子:显示当前表中“应发合计”大于1000元的记录的职工编号、姓名、应发合计三个字段。BROWSEFIELDS职工编号,姓名,应发合计FOR应发合计1000说明:此命令的结果以浏览窗口的形式出现,具有修改功能。2.显示输出命令:LIST|DISPLAY[OFF][范围][FIELDS]表达式表[WHILE条件][FOR条件][TOPRINT|TOFILE文件]说明:(1)命令带OFF参数表示不显示记录号(2)范围指定对哪些记录进行操作,(范围包括:RECORDn:第几号记录;NEXTn:当前记录开始的几个记录;REST:自当前记录开始至文件末尾的所有记录;ALL所有的记录。不选范围则隐含范围为ALL)(3)字段名表指在结果中需要出现的字段名,字段名与字段名之间用逗号分隔。不带时指显示所有字段。(4)WHILE后跟条件,FOR后面也跟条件,区别是,WHILE后的条件如果满足,便停止查找;FOR后的条件查找所有满足条件的记录。(5)TOPRINT和TOFILE文件分别表示将显示结果在打印机上打印出来和将显示结果输出到文件。(6)DISPLAY命令在显示记录满屏后,要求用户按任意键继续显示,并且在该命令中,如果省略范围仅显示当前记录。LIST不分屏,如果省略范围显示所有记录。六.修改记录内容1.编辑或修改的特定记录命令:CHANG|EDIT[范围][[FIELDS]字段表][FOR条件][WHILE条件]例子:修改第五条记录CHANGE|EDITRECORD52.成批自动替换记录命令:REPLACE[范围]字段WITH表达式[FOR条件]例子:计算各记录“应发合计”字段的值。REPLACEALL应发合计WITH职务工资+岗位津贴+保留奖金+保留津贴七.删除记录1.逻辑删除命令:DELETE[范围][FOR条件](打删除标记)2.物理删除命令:PACK(删除有删除标记的记录)ZAP(删除所有记录)例子:删除“职工编号”空白的记录。DELETEALLFOR职工编号=PACK八.数据表排序1.物理排序,生成一个新的表文件。命令:SORTTO新表名ON字段名[/A][/D][范围][FOR条件]例子:把当前表中记录按“应发合计”从大到小重新排序。SORTTOA:GZ3ON应发合计/D2.逻辑排序,生成一个索引文件。(一)标准索引文件:IDX命令:新建索引:INDEXON字段名表达式TO索引文件名同时打开:USE表名INDEX索引文件名之后打开:SETINDEXTO索引文件名重新索引:INDEXON字段名表达式TO索引文件名关闭索引:SETINDEXTO例子:对当前数据表以“应发合计”从大到小排列。INDEXON-应发合计TOGZ(二)复合索引文件:CDX命令:新建索引:INDEXON字段名TAG标记[ASCEDING|DESCENDING]同时打开:USE表名ORDER[TAG]标记改变索引:SETORDERTO[TAG]标记重新索引:INDEXON字段名TAG标记关闭索引:SETORDERTO删除索引:DELETETAG标记例子:对当前数据表以“应发合计”从大到小排列。INDEXON应发合计TAGHJDESC九.查找记录1.顺序查找命令:LOCATEFOR条件[范围]继续查找命令:CONTINUE例子:在当前的表中查找姓“张”的记录。LOCATEFOR姓名=张2.索引查找说明:根据当前的索引来查找记录。在使用命令前先要按准备查找的字段建立索引或排序命令:FIND字符串SEEK表达式用FOUND()检查找到否例子:在当前的表中查找姓“张”的记录。FIND张SEEK张3.查找函数说明:在使用命令前先要按准备查找的字段建立索引或排序函数:SEEK()例子:在当前的表中查找姓“张”的记录。SEEK(张)十.统计数据表记录个数命令:COUNT[范围][FOR条件][TO变量]例子:统计当前表中“应发合计”大于1000元的人数。COUNTFOR应发合计1000十一.数据表数值字段的求和命令:SUM[范围][FOR条件][TO变量]例子:统计当前表中“应发合计”字段的总和。SUM应发合计十二.算术平均值的计算命令:AVERAGE[范围][FOR条件][TO变量]例子:统计当前表中“应发合计”字段的平均值。AVERAGE应发合计十三.多功能计算命令:CALCULATE表达式[范围][FOR条件][TO变量]例子:分别统计当前表中“应发合计”字段的人数、总和、平均值。CALCULATECNT(应发合计),SUM(应发合计),AVG(应发合计)VFP命令、函数及程序语句大全(2)一.数值运算函数函数操作例结果SQRT(x)求平方根SQRT(9)3INT(x)取整数INT(3.14)3ROUND(x)四舍五入ROUND(3.14159,4)3.1416MOD(x,y)求X除以Y的余数MOD(25,4)1MAX(x,y)求X,Y中的最大值MAX(7,8)8MIN(x,y)求X,Y中的最小值MIN(1,2,3)1二.字符中操作函数函数名操作例结果UPPER(S)小写字母UPPER(abc)ABCLOWER(S)大写字母LOWER(ACD)acdLEN(S)求字符串的长度LEN(中国1号)7AT(S1,S2)在字符串S2,找字符串S1AT(H,CHINA)2SUBSTR(S,I,N)在S字符串中的第I个字符起取N个字符SUBSTR('TECHNOLO',3,3)CHNLEFT(S,N)从字符串S左边取N个字符LEFT(“中国人”,4)中国RIGHT(S,N)从字符串S右边取N个字符S=‘12345’RIGHT(S,3)345SPACE(N)生成N个空格合计+SPACE(2)+123合计123TRIM(S)消除字符串尾部空格TRIM(姓名)姓名ALLTRI(S)消除字符串中所有空格ALLTRIM(李丽)李丽STUFF(S1,N1,N2,S2)用字符串S2替换S1中第N1个字符起的N2个字符STUFF(NOW,2,1,E)NEW&宏替换P=“G2”USE&PUSEG2三.日期和时间函数函数名操作例结果DATE()求当前日期DATE()2001/11/12DATETIME()求当前日期和时间DATETIME()2001/11/12/0:22:33amYEAR(D)求年份YEAR(DATE())2001MONTH(D)求月份(数值)MONTH(DATETIME())11CMONTH(D)求月份(字符)MONTH(DATETIME())NovenberDAY(D)求日期DAY(DATE())12DOW(D)求星期几(数值)DOW(DATE())1CDOW(D)求星期几(英文)CDOW(DATE())sundayTIME(D)求当前时间TIME(DATE())10:20:38am四.数据类型转换函数函数名操作例结果ASC(S)求第一个字符串的ASCII码ASC(what)87CHR(N)求ASCII码的字符CHR(87)wSTR(R,L,D)数值转换成字符,L为长度,D为