VFP命令、函数及程序语句大全

更新时间:2024-01-31 06:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VFP命令是一种实现对数据库系统进行操作的动词或短语。VFP命令可在VFP命令窗口中单独运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。

¨ VFP

常用命令分类表

类别 建立文件类 数据库操作类 数据编辑类 记录指针操作类 记录操作类 数据显示类 数据统计类 存变量操作类 程序控制类 系统设置类 ¨ 命令格式

命令 CREATE,MODIFY,COPY,SAVE等 USE,CLOSE,COPY,MODIFY STRUCTURE等 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,DO WHILE?ENDDO,IF?ENDIF等 SET TALK,SET DEFAULT TO等 VFP命令一般由命令动词和控制短语构成。

一般格式:

命令动词[FROM<源文件>][TO<目标文件>][记录范围][FOR/WHILE<条件>] [FIELDS<字段名表>]

[ ]表示可选,<>表示必选, / 表示或选 例如:

(1)APPEND FROM C:\\RSDA.DBF FOR 基本工资>100 FIELDS 编号,姓名,职称,基本工资。

从C:\\RSDA.DBF 表中把基本工资大于100元的记录添加到当前表添加字段为:编号,姓名,职称,基本工资。

(2)COUNT FOR 职称=\高工\统计高工的记录数到内存变量GG。

控制短语规定了对数据库操作的限制条件: 1.指向输入输出目标 FROM/TO

APPEND FROM,COPY FILE TO <目标文件> 2.限制记录范围(SCOPE) ALL 所有记录

NEXT 本记录后的第几个记录 RECORD<1> 第1个记录 REST 当前记录之后所有记录 3.选择字段

FIELDS<字段表>选择输入/输出的字段。 4.限制条件 FOR/WHILE<条件>

FOR 基本工资>100 .AND.基本工资<200

¨ 命令格式规则

命令的行为单位,一行书写不完,在未尾加上“;”第二行接着写。 必须以命令动词开头,动词后的短语顺序不限。 命令中大小写字母等效。

命令动词和关键字可以只写前4个字符。

不得用命令动词或关键字作为自定义变量、 函数、程序名。

一.表结构的操作

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(应发合计) 一.数值运算函数

函数 SQRT(x) INT(x) ROUND(x) 二.字符中操作函数

操作 求平方根 取整数 四舍五入 例 SQRT(9) INT(3.14) 结果 3 3 函数名 UPPER(S) LOWER(S) LEN(S) AT(S1,S2) 小写字母 大写字母 操作 例 UPPER(abc) LOWER(ACD) LEN(\中国1号\) 结果 ABC acd 7 2 求字符串的长度 在字符串S2,找字符串S1 AT(\) 在S字符串中的第I个字符SUBSTR(S,I,N) SUBSTR('TECHNOLO',3,3) CHN 起取N个字符 LEFT(S,N) 从字符串S左边取N个字符 LEFT(“中国人”,4) 中国 S=‘12345’ RIGHT(S,N) 从字符串S右边取N个字符 RIGHT(S,3) SPACE(N) 生成N个空格 345 \合计\SPACE(2)+\合计123 TRIM(S) ALLTRI(S) 消除字符串尾部空格 消除字符串中所有空格 用字符串S2替换S1中第N1TRIM(\姓名 \) 姓名 ALLTRIM(\李 丽\) 李丽 STUFF(\,1,\) NEW P=“G2” USE &P USE G2 STUFF(S1,N1,N2,S2) 个字符起的N2个字符 & 宏替换 三.日期和时间函数

函数名 DATE() DATETIME() YEAR(D) MONTH(D) CMONTH(D) DAY(D) DOW(D) CDOW(D) TIME(D) 操作 求当前日期 求当前日期和时间 求年份 DATE() 例 结果 2001/11/12 2001/11/12/0:22:33am 2001 11 Novenber 12 1 sunday 10:20:38am DATETIME() YEAR(DATE()) 求月份(数值) MONTH(DATETIME()) 求月份(字符) MONTH(DATETIME()) 求日期 DAY(DATE()) 求星期几(数值) DOW(DATE()) 求星期几(英文) CDOW(DATE()) 求当前时间 TIME(DATE()) 四.数据类型转换函数

函数名 ASC(S) CHR(N) STR(R,L,D) VAL(S) CTOD(S) DTOC(D) 操作 例 结果 87 w 3.14 123.00 求第一个字符串的ASCII码 ASC(\) 求ASCII码的字符 数值转换成字符,L为长度,D为小数位数 字符串转换为数值 字符串转日期 日期转换成字符串 CHR(87) X=3.1415 STR(X,6,2) VAL(\) CTOD('11/01/2002') 11/01/2002 DTOC(DATE()) 11/01/2002 DTOS(D) CTOT(C) DTOT(D) TTOC(T) TTOD(T) 把日期转成年月日式的字符串 字符串转成日期时间型 日期型转为日期时间型 日期时间型转为字符型 日期时间型转为日期型 DTOS(DATE()) CTOT(11/01/2002 10:30:50am) DTOT(DATE()) TTOC(DATETIME()) TTOD(DATETIME()) 20021101 11/01/2002 10:30:50am 11/25/2001 00:00:01am 11/25/2001 00:00:01am 11/25/2001 YES IIF(LE,E1,E2) 逻辑判断 IIF(A>0,\) 五.检测函数

函数名 RECNO() RECCOUNT() BOF() EOF() FOUND() ROW() COL() SYS(N) 操作 检测当前记录号 检测当前记录数 开始记录 最后记录 返回查找结果 返回当前行坐标 返回当前列坐标 返回系统状态 例 RECNO() RECCOUNT() BOF() EOF() FOUND() ROW() COL() SYS(13) 结果 1 12 1 12 .T. 1 1 联机状态 1.MODIFY COMMAND

意义:创建命令文件。

命令格式:MODIFY COMMAND 文件名 例如:MODIFY COMMAND PROC1

执行此命令后,将进入全屏幕编辑状态。 如原已建立了该文件proc1,将调出该文件在屏幕上显示,用户可对之修改。如是新文件,则用户可利用全屏幕编辑键,输入自己的程序。新文件将自动加上扩展名.PRG。 2.DO

意义:执行命令文件程序,有三种方法:①在项目管理器中选“代码→程序→选择程序名→运行”。②在主菜单中选“程序→运行→输入(选择)程序名→运行”。③在程序中或命令窗日中使用DO命令。命令格式:DO 程序名[WITH 表达式表]

程序名可以是上述方式建立的命令文件(.PRG文件)、可执行文件(.EXE文件)、应用程序(.APP文件),及对.PRG文件编译后的文件(.FXP文件)。如调用DO命令时不带扩展名,则按.EXE文件、.APP文件、.FXP文件、.PRG文件的顺序查找同名程序并执行之。 例如:DO PROC1

此外,程序名还可能是菜单程序,调用时必须带扩展名(.MPR)。例如,有菜单程序MAIN.MPR,则可如下调出执行: DO MAIN.MPR

程序名还可以是事件名或过程名。

其中表达式表由多个表达式组成,用逗号分开,在执行时首先计算各表达式的值,并带入被调程序,被调程序第一句应是LPARAMETERS形参表语句,形参表是以逗号分隔的多个内存变量名,其个数应等于调用时的表达式的个数,执行时,首先用调用语句中各表达式的值对应给它们赋值。 例如:主程序中:DO PROC1 WITH “AB”,21 被调程序:LPARAMETERS M1,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 通配符]将变量名能与通配符相匹配的内存变量说明为局部性变量。“ALL EXCEPT通配符”将除了能与通配符相匹配的变量名之外的内存变量说明为局部性变量。在程序中,为了一个程序的运行结果不影响另一个程序的执行,不希望同名变量将值从一个程序带到另一个程序而造成干扰。为此,可将该变量定义成局部性变量。

5.DIMENSION

意义:定义内存变量数组命令,VFP中可定义一维或二维数组。

格式:DIMENSION 数组名(数字表达式1[,数字表达式2])[,数组名2(数字表达式1[,数字表达式2])]?

每个数组的每个元素都可单独使用,如同一个内存变量,称为下标变量,下标起始值为1。

例如,DIMENSION ARRAY1(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.PUBLIC ARRAY

意义:定义全局性内存变量数组。

格式:PUBLIC ARRAY 数组名(数字表达式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“请输入初始日期:” TO D1

屏幕上显示:“请输入初始日期:”,光标在此句之后。用户可输入{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,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.SET RELATION 意义:将当前数据库和“别名”工作区中的表文件关联在一起,当前表文件称为主动表文件,“别名”工作区中的表文件称为被关联表文件,每当主动表文件中指针移动时,被关联表文件中指针也相应移动。 命令格式:SET RELATION TO 字段名 INTO 别名[ADDITIVE] 命令中选用的“字段名”必须同时包含在两个表文件中,且被关联表必须以该字段建立索引文件并打开为主索引文件。每当主动表文件中记录指针移动时,被关联表中记录指针根据主索引文件指引指向与之相匹配(索引字段值等于主动表当前记录该字段的值)的第一条记录。若找不到匹配记录,则指针将指向文件尾,EOF()为真(.T.)

如命令无ADDITIVE选项,在建立关联时将取消当前数据库与其他数据库的任何关联,仅保留一个新关联。而选了此选项,则原有关联均保留,增加一个新关联。

要注意的是,如果对应主动表中某记录在被关联表中找不到匹配记录时,主动表中数据被改为0。例5.11中如果调价表中商品包括商品表中

全部商品,利用此命令程序可修改为:

USE 调价&&第一个打开表默认置于1号工作区 INDEX ON 商品代码 TO INDEX1 SELECT 2 USE 商品

SET RELATION TO 商品代码 INTO 调价 SCAN

REPLACE 单价 WITH 调价.新单价,金额 WITH 单价*数量 ENDSCAN

本例中关于被关联表中字段名也可用“区号.字段名”形式对之访问。

不过使用本程序要求两表中内容必须匹配, 例如例5.11中如商品只有部分调价,在调价表中只有商品表中部分商品,那么该程序将使商品表中不调价商品单价均变为0。

一般在涉及利用一个表数据修改另一个表数据时,我们以采用SQL语言中修改命令UPDATE比较好。也可采用全联结视图再对之操作。” 2.RUN

意义:在VFP环境中调用DOS命令。· 命令格式:RUN DOS命令或!DOS命令 3.LOAD命令

意义:把汇编或C语言编写并编译的二进制文件调入内存命令。 命令格式:LOAD 二进制文件名 4.CALL命令

意义:执行由LOAD装入内存的二进制代码文件命令。 命令格式:CALL 文件名[WITH 字符表达式/内存变量] 其中WITH选项用于向调用程序传递参数。 5.ON ERROR

意义:当出现错误时执行的命令。 命令格式:ON ERROR 命令

其中命令可为任何VFP语句。在程序调试过程中, 可在程序中加入此命令,并设计命令处理程序,在其中可加入显示ERROR(),MESSAGE(),LINENO()和PROGRAM()的语句,将错误代码、错误消息、错误行号及程序名称显示出来,以帮助发现错误所在,方便纠正错误。在应用程序中,有时可能出现一些不影响最终结果的错误,我们也可在程序中加入这类错误陷阱,所指定的命令可以是一条无效语句,不让错误影响程序运行。

【例5.12】程序出错时的处理程序及调用方法 主程序:

*---Set system enviroment------ clos data clea

on erro do showerro with prog(),lineno(),erro(),mess()&&调用出错程序showerro 语句序列

程序出错时的处理程序:

para m_prog,m_line,m_num,m_mess&&传递参数 priv m_odcons&&定义局部变量 m_odcons=set('cons') set cons off

defi wind erro_win from 0,0 to 14,49 ; titl ' 系统错误 '; colo gr+/b; shad doub; in desktop

move wind erro_win cent acti wind erro_win

@1,4 say ' 错误警告' colo gr+/b

@3,8 say '当前程序无法继续,按<确定>将返回主调!' colo w+/b

@4,4 say '程序建议:稍后再试或与软件供应商联系.' colo w+/b

@6,4 say '出错程序:'+m_prog colo w+/b

@7,4 say '出 错 行:'+allt(str(m_line)) colo w+/b @8,4 say '错误代码:'+allt(str(m_num)) colo w+/b @9,4 say '错误内

容:'+iif(len(m_mess)<=28,m_mess,subs(m_mess,1,28)+'...') colo w+/b

@2,3 to 2,wcol()-4 colo w/b @5,3 to 10,wcol()-4 colo w/b

=opendbf('errosave','errosave','shar')&&存放错误情况 inse into ; dbf\\errosave

(errodate,errotime,erroprog,erroline,errocode,erromess); valu (date(),time(),m_prog,m_line,m_num,m_mess) use in errosave m_readkey=20 m_cnt=1

do while m_readkey=20 if mod(m_cnt,2)=0

@1,6 say ' 错误警告' colo b/b else

@1,6 say ' 错误警告' colo gr+/b endi

@wrow()-2,wcol()/2-2 get mb_isee func '*th 确定' defa 1 &&colo sche 13

read cycl modal time 0.4 m_readkey=readkey() m_cnt=m_cnt+1

endd

set cons &m_odcons clea wind close data clea

retu to master&&返回主程序

6. 显示文件目录命令

格式:DIR [<驱动器>][<路径>][<文件名>] 功能:显示指定的磁盘驱动器上的文件名

说明:<文件名>中可带通配符;命令中不指定文件名,则仅仅显示指定目录下的数据表文件名。 7.清屏命令CLEAR 格式:CLEAR 功能:清除屏幕 8.总清命令CLEAR ALL 格式:CLEAR ALL

功能:关闭所有打开的数据表文件、索引文件和其他各种文件,清除已有的内存变量

9.SET TALK ON/OFF 格式:set talk on/off

功能:设置所有命令执行的结果显示与否

本文来源:https://www.bwwdw.com/article/8ajw.html

Top