您好,欢迎来到赴品旅游。
搜索
您的当前位置:首页VFP中常用命令

VFP中常用命令

来源:赴品旅游


VFP中常用命令

一、 数据库的建立、打开、关闭和删除 建立数据库:

CREATE DATABASE [database name|?]

从磁盘中删除数据库:

CREATE DATABASE [database name|?] ELETE DATABASE database name DELETE DATABASE database name |?

打开数据库:

OPEN DATABASE [EXCLUSIVE|SHARED][NOUPDATE]

打开数据库设计器(允许用户按交互方式编辑当前数据库)

MODIFY DATABASE [database name|?]

指定的数据库database name为当前数据库。

指定当前的数据库:

SET DATABASE TO [database name]

Database name必须为已经打开的数据库。如果省略数据库名称 database name则不指定当前 数据库

(没有当前数据库)。

关闭数据库:

CLOSE DATABASE [ALL]

关闭当前数据库,如果带

ALL子句,则关闭所有打开的数据库。

二、 数据表和视图的建立、打开、关闭和删除 建立数据表(SQL命令):

CREATE TABLE | DBF table name (Col_ name1 Type1 [NOT NULL/NULL]

[{,Col _n ame2 Type2 [NOT NULL/NULL]}...] ) table_ name是所创建的数据表的名字。 Col_name1,Col_name2,...是表中列的名。

Type1, Type2...是相应列的数据类型(VFP的数据类型见表 3-9)。

如果说明为 NOT NULL,则列中不允许分配空值(这种情况下,列不能包含空值,如果插 入空值,将返回错误信息)。

向当前打开的数据库中添加数据表:

ADD TABLE table name|?

从当前打开的数据库中删除数据表:

REMOVE TABLE table name|? [DELETE]

如果包含DELETE子句,将从磁盘中删除这个表文件,否则,只从数据库中删除,但文件 仍保存在磁盘中。

在当前打开的数据库中建立视图:

CREATE SQL VIEW view name AS SELECT 其中SELECT……为SELECT语句。

……

执行这个语句时,如果没有打开的数据库,则建立的视图,这样的视图不能存储。 从当前打开的数据库

中删除视图:

DELETE VIEW view name

打开一个表:

USE tablename|? [IN 工作区号]

将当前数据表与另一数据表连接后建立一个新表:

JOIN WITH 工作区号|表别名TO table name FOR 条件[FIELDS 字段名表]

三、数据表和表结构的编辑、修改 打开浏览窗口(可在其中编辑数据表)

BROWSW (详细格式见 P. 114~116)

打开并修改数据表中的字段:

(1) CHANGE [FIELDS 字段名列表]

⑵EDIT [FIELDS 字段名列表]

这两个命令的功能相似,可选子句较多(详见手册)

数据表改名:

RENAME TABLE table name1 TO table name2

其中数据表tablename1必须存在且未打开。

视图改名:

RENAME VIEW view name1 TO view name2

其中数据表tablename1必须存在且未打开。

修改数据表结构(SQL命令):

ALTER TABLE table name ;

ADD 字段名 Type [NULL | NOT NULL] [,字段名 Type [NULL | NOT NULL];

[ALTER COLUMN 字段名 Type {NULL | NOT NULL}]; [{,字段名 Type NULL | NOT NULL}...]; [DROP字段名[,字段名[,...]]

将当前表与另一表之间建立关联:

SET RELATION TO [ 表达式1 INTO 工作区号1 |表别名1]; [,表达式2 INTO 工作区号2 |表别名2][,…]

建立关联的两个表必须事先已按关联表达式进行索引排序。

在当前表与另一表之间建立一对多关联:

SET SKIP TO 表别名1[,表别名2]

消除当前表与另一表之间的关联:

SET RELATION OFF INTO 工作区号|表别名

四、数据表中数据操作(查询、插入、删除和修改等)

数据查询 SELECT语句(SQL命令)

格式见教材的有关章节。这是本课程的重点内容,必须很好地掌握。

更改数据表中的记录:

REPLACE 字段 1 WITH 表达式 1[ADDITIVE]; [,< [,< 字段 2> WITH < 表达式 2>[ADDITIVE], …]; [FOR 条件 1][WHILE 条件 2]

其中的ADDITIVE子句适用于备注字段,表示将表达式的值加在字段的末尾。的记录:

REPLACE FROM ARRAY 数组名[FIELDS 字段名列表][常用子句]

用新的值更新表中的记录(SQL命令):

UPDATE [database name!]table name;

SET Column _1=Expressi on1 [{Colu mn_ 2=expressio n2}...]; [WHERE Co nditio n]

用一个表中的数据更新当前指定工作区中打开的表:

UPDATE ON field name FROM file name; REPLACE field name1 WITH expr1 [,field name2 WITH expr2 [,...]]

给记录加删除标记(SQL命令):

DELETE FROM [database name!]table name; [WHERE 条件]

给记录加删除标记:

DELETE [范围][FOR 条件][WHILE 条件]; [IN工作区号|表别名]

用内存数组的值更新数据表中

永久删除加了删除标记的记录:

PACK

永久删除打开的数据库中加了删除标记的记录:

PACK DATABASE

去掉删除标记(恢复)

RECALL [常用子句]

删除一个表中所有记录(保留表的结构)

ZAP [IN table name|alias]

为数据表文件追加记录:

APPEND [BLANK][IN 工作区号|别名]

从另一个文件中提取数据添加到当前数据表的尾部:

APPEND FROM filename|? [FIELDS 字段名列表][FOR 条件]

其中file name所指定的文件可以是数据表、 表,需要其它子句指定格式(详见手册)

EXCEL电子表格、文本文件等,如果不是数据

用内存数组的值添加到当前数据表的尾部:

APPEND FROM ARRAY array name [ FOR 条件][FIELDS 字段名列表]

数据中的一行对应一个新记录,一列对应一个字段。

从一个文件输入一个 OLE对象放入一个通用(general)字段:

APPEND GENERAL 通用字段名[FROM file name]

如果省略子句FROM file name,则将指定的字段清空。 将一个文本文件的内容拷贝到一个备注字段

APPEND MEMO 备注字段名[FROM file name][OVERWRITE]

如果省略子句 FROM file name,则将指定的字段清空。 插入新记录(在当前记录之前或后插入)

INSERT [BLANK] [BEFORE]

如不省略BLANK,则插入一个空白记录,且不显示输入窗口。 在表中插入新记录并赋值(SQL命令):

INSERT INTO table name [( 字段 1 [,字段 2, ...] )]V ALUES (eExpressio n1 [, eExpressio n2,...]) 或

INSERT INTO table name FROM ARRAY ArrayName | FROM MEMV

如带有FROM MEMV AR子句,则用同名的内存变量给字段赋值。 清除当前记录中字段的数据:

AR

BLANK [常用子句]

移动记录指针:

SKIP [n] [IN 工作区号|表别名]

五、 文件管理(文件和文件夹的复制、创建和删除 从当前表复制出表或其它类型的文件(表须打开)

COPY TO file name [FIELDS 字段名列表][常用子句][其它子句]

如果没有指定类型,则复制一个与当前的表相同的数据表。 复制表的结构

COPY STRUCTURE TO file name [FIELDS

复制任何文件:

字段名列表]

COPY FILE 源文件TO目的文件

如果用此命令复制表,表须关闭 从磁盘上删除任意文件: (1) ERASE filename|? (2) DELETE FILE [filename|?] 任意文件改名(或文件移动到另一文件夹)

RENAME file name1 TO file name2

其中filename1和filename2都可以包含路径。如二者不在同一文件夹,则将 到filename2所在的文件夹。 显示一个文件夹中的文件信息:

filename1移动

DIR | DIRECTORY [ON drive]

从磁盘上删除一个文件夹:

RD | REDIR 文件夹名

在磁盘上建立一个文件夹:

MD | MKDIR 文件夹名

六、 数据的复制与传送 单个记录与数组间的数据传送 当前记录T数组或内存变量:

SCATTER [FIELDS 字段名列表][MEMO]TO 数组名[BLANK] | MEMV AR [BLANK] 其中[BLANK]表示

建立一个空元素的数组。 制到同名同类型的内存变量。

如果包含MEMO子句,则备注字段一起复制。

如果用MEMVAR子句,则表示将各字段的值复

数组或内存变量 T当前记录

GATHER FROM 数组名 | MEMV AR [FILEDS 字段名列表][MEMO]

用同名的内存变量或数组中的第一行置换当前记录, 一行。

如果数组为多行的二维数组,

也只用第

成批记录与数组间的数据传送 表f数组:

COPY TO ARRAY array name [ 常用子句]

数组f表:

(1) APPEND FROM ARRAY array name [ FOR (2) REPLACE FROM ARRAY 数组名[常用子句]

用内存数组的值更新数据表中符合条件的记录。 查询结果f数组:

条件][FIELDS 字段名列表]

用内存数组的值加在数据表的尾部,数据中的一行对应一个新记录,一列对应一个字段。

SELECT ……INTO ARRAY array name

将SQL SELECT语句的查询结果传给数组 arrayname。这里“ SELECT……”可为各种形式 的

SELECT查询语句。

给内存变量赋值:

STORE表达式TO变量名

变量名=表达式

七、排序与索引

将当前表排序后建立一个新数据表:

SORT TO 文件名 ON 字段名1 [/A | /D]; [/C][字段名 2 [/A | /D] [/C]…]; [ASCENDING | DESCENDING][

建立单索引文件:

常用子句];

INDEX ON 表达式TO单索引文件名; [FOR< 条件 >][UNIQUE] [COMPACT]; [ASCENDING][DESCENDING][ADDITIVE]

建立复合索引文件:

INDEX ON 表达式TO TAG 索引名[OF复合索引文件名]; [FOR 条件][UNIQUE|CANDIDATE]; [ASCENDING][DESCENDING][ADDITIVE]

使用索引文件:

打开表时将索引文件一并打开,

USE命令带INDEX子句:

USE tablename|? [IN 工作区号][INDEX 索引文件名列表|?]

给当前表打开一个或多个索引文件:

SET INDEX TO [索引文件名列表|?];

[ORDER索引文件名序号|索引文件名|[TAG]索引名[OF复合索引文件名]; [ASCENDING][DESCENDING] : 指定字符字段在排序或索引时的整理系列: SET COLLATE TO 整理系列

对于汉字字符串,\"整理系列”可以是\"Machine”、\"PinYin ”或\"Stroke”三者之一(必须 带引号),分别表示按机器码、拼音和笔划排序。 指定当前表中的控制索引文件或标记:

SET ORDER TO ;

[索引文件名序号|索引文件名|[TAG]索引名[OF复合索引文件名]; [IN工作区号表别名]; [ASCENDING][DESCENDIN G]

删除索引

DELETE TAG ALL [OF 复合索引文件名]

DELETE TAG 索引标识1 [OF复合索引文件名 1]; [,索引标识2 [OF复合索引文件名 2]]…

八、 查找和定位

顺序查找当前表中满足条件的第一条记录:

LOCATE FOR 条件下[范围][WHILE 条件]

找到后将记录指针定位在满足条件的第一条记录,且函数 在索引表中查找:

FOUND()的返回值为真。

FIND cExpr

其中cExpr为字符串表达式。如果找到,则记录指针定位在满足条件的第一条记录,且函 数FOUND()的返回值为真;查找失败时,FOUND()的返回值为假,记录指针定位在文件尾。 在索引表中查找:

SEEK eExpr;

[ORDER索引文件名序号|索引文件名|[TAG]索引名[OF复合索引文件名]; [ASCENDING][DESCENDING] :; [IN工作区号|表别名]

如果找到,则记录指针定位在满足条件的第一条记录,且为真;查找失败时, 返回值为假,记录指针定位在文件尾。 继续查找:

FOUND()的

CONTINUE

用LOCATE、FIND或SEEK查找到一条记录后,用 CONTINUE 继续查找下一条。

用以上查找命令 LOCATE、FIND、SEEK和CONTINUE 的查找结果,都可以通过函数 FOUND()的返回值反映出来。

九、 统计计算 统计表中的记录数:

COUNT [范围][FOR 条件][WHILE 条件][TO内存变量名]

统计满足条件的记录数,显示记录数或将结果赋给内存变量名。 求和:

SUM [表达式列表];

[范围][FOR条件][WHILE 条件][T0内存变量名|T0 ARRAY 数组名]求平均值:

AVERAGE [表达式列表];

[范围][FOR条件][WHILE 条件][T0内存变量名|T0 ARRAY 数组名]对当前表中数值型字段进行分组求和:

TOTAL TO table name ON 字段名[常用子句]

其中table name为存放结果的表文件名,字段名为确定求和分组的字段。

计算:

CALCULATE 表达式列表;

[范围][FOR条件][WHILE 条件][TO内存变量名|TO ARRAY 数组名]其中表达式列表可以是如下函数的任意组合:

AVG (nExpr ) , CNT(), MAX(eExpr), MIN(eExpr), NPV(nExpr1, nExpr2, STD ( nExpr ), SUM ( nExpr ), VAR ( nExpr )

其中nExpr为数值表达式,eExpr为任意表达式。

十、程序控制 条件语句:

IF 条件[THEN] [ELSE] [……] ENDIF

多分支语句:

DO CASE

CASE逻辑表达式1 CASE逻辑表达式2 CASE逻辑表达式n

),

[OTHERWISE] ENDCASE DO循环: DO WHILE 条件 [LOOP] [EXIT] ENDDO FOR循环

FOR循环变量=初值TO终值STEP步长

……(中间可插入[LOOP]或[EXIT])

ENDFOR|NEXT

扫描循环(对一个表中满足条件的记录进行循环)

SCAN [范围][FOR 条件][WHILE 条件]

……(中间可插入[LOOP]或[EXIT])

ENDSCAN

集合扫描循环

FOR EACH Var IN Group Comma nds [EXIT] [LOOP]

ENDFOR | NEXT [Var]

十一、其它 定义数组:

DECLARE | DIMENSION 数组名(下标1 ,下标2,……)

定义过程:

PROCEDURE过程名 PARAMETERS 参数表 RETURN [TO MASTER | TO

定义函数:

程序名]

FUNCTION 函数名 PARAMETERS 参数表 RETURN表达式

调用一个子程序或过程

DO子程序名|过程名[IN程序文件名][WITH实在参数表]

定义公共变量:

PUBLIC变量名列表

PUBLIC [ARRAY] 数组名1(行1,列1)[,数组名2(行2,列2)[,…]]

定义私有变量

PRIVATE变量名列表

PRIV ATE ALL[LIKE | EXCEPT 通配符]

定义局部变量

LOCAL变量名列表

LOCAL [ARRAY] 数组名1(行1,列1)[,数组名2(行2,列2)[,显示各种信息:

LIST…(格式见有关手册) DISPLAY…(格式见有关手册)

输出提示信息:

WAIT [<提示信息>][TO <内存变量>]; [WINDOW[AT[< 行>,< 列 >][NOW AIT]]; [CLEAR|NOCLEAR]; [TIMEOUT<数值表达式>]

各种设置命令:

设置是否显示日期中的世纪:

SET CENTURY ON | OFF

设置显示的小数位数:

SET DECIMALS TO 小数位数

设置是否处理带删除标记的记录:

SET DELETED ON | OFF

如果设置为ON,则不处理带删除标记的记录。

设置是否显示命令的结果:

SET TALK ON | OFF

设置文件的搜索路径:

SET PATH TO 路径

设置传给子程序或自定义函数的参数是按值还是按引用方式传递:

…]]

SET UDFPARMS TO V ALUE | REFERENCE

如设置为TO VALUE,表示按值传递。

执行一个外部命令或程序:

RUN命令或程序

在指定的位置显示或打印:

@行,列SAY

在指定的位置显示表达式的值,并等待用户输入,将输入值赋给一变量:

@行,列SAY表达式GET变量名[DEFAULT表达式] READ

例:

@2,2 say \"请输入金额:\"get nMoney default 50 Read

此例先在第2行、第2列显示\"请输入金额:\",等待用户输入一个数值,将用户输入值赋给 变量nMoney,如果用户不输入数值(直接按回车) 行不能漏掉“ Read”。

,则将50赋给nMoney。请注意在下-

ALL :命令对表中所有记录起作用,即执行时从首记录到末记录,最记录指针停在数据库 的末尾。 NEXT 命令作用于从当前记录开始到当前记录后

录,最后记录指针指向作用范围内的最后一条记录处。

条记录为止的范围内的记 NEXT 1表示仅作用于当前记录。

Record 命令作用于记录号为 的记录。 TEST命令作用范围从当前记录开始到表的最后一个记录为止

命令中的FOR子句只作用于满足条件的记录。

一、基本命令

1. 打开和关闭数据表 USE [<数据表名 >] CLOSE ALL 2. 选择当前工作区

SELECT <工作区号|数据表名|0>

功能:选择当前工作区。可以直接选择工作区号,也可通过指定其中已经打开的数据表别 名来指定工作区。

当省略选项时为关闭当前数据表 关闭所有数据表

SELECT 0是选择当前未使用的最低编号的工作区 3. 增加记录 APPEND BLANK INSERT BLANK

在当前表的尾部追加一个空白记录 在当前表的当前记录之后插入一条空白记录

在当前表的当前记录之前插入一条

空白记录

INSERT BLANK BEFORE

注意:在表建立索引后,INSERT的功能与APPEND相同

4. 替换字段的值

REPLACE [范围] <字段 1> WITH <表达式 1>[, <字段 2> WITH <表达式 2>,...<字段 n> WITH < 表

达式 n>] [FOR ]

功能:计算表达式的值,并填入指定字段,当范围和条件选项省略时只对当前记录操作。

5. 删除记录

DELETE [范围][FOR 条件]

功能:对记录加删除标记(即逻辑删除)

,当范围和条件选项省略时只对当前记录操作。

RECALL [范围][FOR 条件]

功能:对记录去除删除标记(即恢复删除)

,当范围和条件选项省略时只对当前记录操作。

PACK

功能:删除带有删除标记的记录

ZAP

功能:物理删除当前表所有记录

6. 建立索引与选择主控索引

INDEX ON < 关键字表达式> TAG <索引标识符> [DESCENDING]

功能:对当前表按 <关键字表达式 >建立结构复合索引,索引文件名与表名相同,扩展名默 认为

CDX。 DESCENDING选项为按关键字降序排列,默认为升序。 SET ORDER TO TAG < 索引标识符>

功能:在结构复合索引文件打开后,指定主控索引标识符。

7. 记录指针定位

GO BOTTOM | TOP | <expN>

功能:移动记录指针直接指定记录。 为指向记录号为<expN>的记录。

BOTTOM为指向末记录,TOP为指向首记录,<expN>

SKIP [expN]

功能:按expN的值,从当前位置出发移动记录指针。

当expN为正时向尾部方向移动 expN

条记录,当expN为负时向首部方向移动 expN条记录,当expN为1时可以省略。

8. 查找

LOCATE [范围][FOR 条件]

功能:在数据表的指定范围中搜索满足条件的第一个记录。搜索成功,记录指针指向该记 录,并将FOUND ()置为.「;否则,记录指针指数据表末尾,并将 范围〉缺省为ALL。

FOUND ()置为.F.。<

CONTINUE

功能:查找下一个满足 LOCATE命令指定条件的记录,查找成功,将 将指针指向满足条件的记录;否则,记录指针指数据表末尾,将

FOUND()置为•「并

FOUND()置为.F.o

9. 数据表复制

COPY TO <文件名 > [范围][FIELDS <字段名表>][FOR条件]

功能:把已打开的表内容复制到新的表中。 表字段,缺省为全部字段。

<范围 >缺省值为ALL o <字段名表 >规定了新

COPY STRUCTURE TO < 文件名 > [FIELDS < 字段名表 >]

功能:把当前表的结构复制到新的表中。不复制记录。 为全部字段。

<字段名表 >规定了新表字段,缺省

10. 统计

COUNT [范围][FOR 条件]TO <内存变量>

功能:统计表中满足条件的记录个数,并存入指定的内存变量。

<范围 >缺省时为ALL

SUM [表达式表][范围][FOR条件]TO <内存变量表>

功能:统计表中全部的或指定数值字段的值的和,并各个和存入指定的内存变量,内存就 是的个数求和的数值表达式个数相同。

<范围〉缺省时为ALL

AVERAGE [表达式表][范围][FOR条件]TO <内存变量表>

功能:统计表中全部的或指定数值字段的值的平均,并各个和存入指定的内存变量,内存 就是的个数求和的数值表达式个数相同。

<范围 >缺省时为ALL

二、函数

1. 数学函数 ABS(expN)

功能:求数值表达式的绝对值。

INT(expN)

功能:对数值表达式 expN取整数部分

ROUND(expN, Dec)

功能:对数值表达式 expN精确到小数点后Dec位。

2. 字符函数

SUBSTR(expC, expN1, expN2)

功能:取字符串expC中从expN1开始的expN2个字符,若expN2省略,则从expN1开始 一直取到最后。

TRIM(expC)

功能:取掉字符串 expC的尾部空格。

ALLTRIM(expC)

功能:取掉字符串expC首尾的空格。

SPACE(expN)

功能:产生expN个空格。

UPPER(expC)

功能:将字符串expC转换成大写。

LOWER(expC)

功能:将字符串expC转换成大写。

expCI $ expC2

功能:判断字符串 expCI是否在expC2中出现,若出现则值为.「,否则为.F.。

3•日期函数 DATE()

功能:获取系统日期。

4. 类型转换 VAL(expC)

功能:将数字字符值转换成数值,如:

VAL('123.45')的值为数值123.45

STR(expN [,宽度[,小数位数]])

功能:将数值转换成字符串,当小数位数省略时不带小数,当宽度和小数位数都省略时宽 度为10不带小数。

DTOC(expD)

功能:将日期表达式 expD转换成字符表达式,格式与系统日期格式一致。

DTOS(expD )

功能:将日期表达式 expD转换成字符表达式,格式为 YYYYMMDD ,前4位为年份中间 2位为月份最后2位为日。

CTOD(expC)

功能:将符合当前系统日期格式的字符串转换成日期值。

5. 测试函数 FOUND()

功能:测试当前的查找 为.F.。

(SEEK, LOCA TE, CONTINUE)是否成功。查找成功函值为 .T•否则

EOF()

功能:测试当前记录指针是否到了数据表的末尾。当在末尾时函数为

.T•否则为.F.O

RECNO()

功能:返回当前记录号

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- fupindai.com 版权所有 赣ICP备2024042792号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务