Visual FOXPRO中的常用命令Visual FOXPRO中的常用命令

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

visual foxpro中的常用命令visual foxpro中的常用命令
目录/说明
一、数据库的建立、打开、关闭和删除
二、数据表和视图的建立、打开、关闭和删除
三、数据表和表结构的编辑、修改
四、数据表中数据操作(查询、插入、删除和修改等)
五、文件管理(文件和文件夹的复制、创建和删除)
六、数据的复制与传送
七、排序与索引
八、查找和定位
九、统计计算
十、程序控制
十一、其它
说明
命令结构foxpro的命令结构一般由命令动词、语句体和注释几部分构成。

如:list [范围]
常用子句
范围:表示记录的执行范围,可以是下面几项其中之一:
all 表示全部记录;
next n 表示从当前记录开始的以下n条记录;
record n 表示第n号记录;
rest 表示从当前记录到最后一条记录。

fields 字段名表:用于指定操作的字段,多个字段时用逗号分隔。

for条件:对满足条件的记录进行操作。

while 条件:当遇到第一个不满足条件的记录时,停止命令执行。

以下命令中,大写的英文词为关键词,必须原样照写。

“常用子句”指以下几个可选子句:
[范围] [fields 字段名表] [for 条件] [while 条件]
命令中的“列表”,指用“,”分隔的各项。

如“字段名列表”就是将各个字段名用逗号分隔。

部分英文词的意义:databasename 数据名tablename 数据表名filename 文件名viewname 视图名arrayname
数组名
提示:加下划线的为本课程要求掌握的命令。

一、数据库的建立、打开、关闭和删除
建立数据库:
create database [databasename|?]
从磁盘中删除数据库:
delete database databasename|?
打开数据库:
open database [exclusive|shared][noupdate]
打开数据库设计器(允许用户按交互方式编辑当前数据库):
modify database [databasename|?]
指定的数据库databasename为当前数据库。

指定当前的数据库:
set database to [databasename]
databasename必须为已经打开的数据库。

如果省略数据库名称databasename,则不指定当前数据库(没有当前数据库)。

关闭数据库:
close database [all]
关闭当前数据库,如果带all子句,则关闭所有打开的数据库。

二、数据表和视图的建立、打开、关闭和删除
建立数据表(sql命令):
create table | dbf tablename (col_name1 type1 [not null/null]
[{,col_name2 type2 [not null/null]}...])
table_name是所创建的数据表的名字。

col_name1,col_name2,...是表中列的名。

type1, type2...是相应列的数据类型(vfp的数据类型见表3-9)。

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

向当前打开的数据库中添加数据表:
add table tablename|?
从当前打开的数据库中删除数据表:
remove table tablename|? [delete]
如果包含delete子句,将从磁盘中删除这个表文件,否则,只从数据库中删除,但文件仍保存在磁盘中。

在当前打开的数据库中建立视图:
create sql view viewname as select ……
其中select ……为select语句。

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

从当前打开的数据库中删除视图:
delete view viewname
打开一个表:
use tablename|? [in 工作区号]
将当前数据表与另一数据表连接后建立一个新表:
join with 工作区号|表别名to tablename for 条件[fields 字段名表]
三、数据表和表结构的编辑、修改
打开浏览窗口(可在其中编辑数据表):
browsw(详细格式见p. 114~116)
打开并修改数据表中的字段:
(1) change [fields 字段名列表]
(2) edit [fields 字段名列表]
这两个命令的功能相似,可选子句较多(详见手册)。

数据表改名:
rename table tablename1 to tablename2
其中数据表tablename1必须存在且未打开。

视图改名:
rename view viewname1 to viewname2
其中数据表tablename1必须存在且未打开。

修改数据表结构(sql命令):
alter table tablename ;
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 [databasename!]tablename;
set column_1=expression1 [{column_2=expression2}...] ;
[where condition]
用一个表中的数据更新当前指定工作区中打开的表:
update on fieldname from filename;
replace fieldname1 with expr1
[, fieldname2 with expr2 [, ...>
给记录加删除标记(sql命令):
delete from [databasename!]tablename;
[where 条件]
给记录加删除标记:
delete [范围] [for 条件] [while 条件];
[in 工作区号|表别名]
永久删除加了删除标记的记录:
pack
永久删除打开的数据库中加了删除标记的记录:
pack database
去掉删除标记(恢复)
recall [常用子句]
删除一个表中所有记录(保留表的结构):
zap [in tablename|alias]
为数据表文件追加记录:
append [blank][in 工作区号|别名]
从另一个文件中提取数据添加到当前数据表的尾部:
append from filename|? [fields 字段名列表][ for 条件]
其中filename所指定的文件可以是数据表、excel电子表格、文本文件等,如果不是数据表,需要其它子句指定格式(详见手册)。

用内存数组的值添加到当前数据表的尾部:
append from array arrayname [ for 条件][fields字段名列表]
数据中的一行对应一个新记录,一列对应一个字段。

从一个文件输入一个ole对象放入一个通用(general)字段:
append general 通用字段名[from filename]
如果省略子句from filename,则将指定的字段清空。

将一个文本文件的内容拷贝到一个备注字段:
append memo 备注字段名[from filename][overwrite]
如果省略子句from filename,则将指定的字段清空。

插入新记录(在当前记录之前或后插入):
insert [blank] [before]
如不省略blank,则插入一个空白记录,且不显示输入窗口。

在表中插入新记录并赋值(sql命令):
insert into tablename [(字段1 [, 字段2, ...])]values (eexpression1 [, eexpression2,
...])

insert into tablename from array arrayname | from memvar
如带有from memvar子句,则用同名的内存变量给字段赋值。

清除当前记录中字段的数据:
blank [常用子句]
移动记录指针:
skip [n] [in 工作区号|表别名]
五、文件管理(文件和文件夹的复制、创建和删除)
从当前表复制出表或其它类型的文件(表须打开)
copy to filename [fields 字段名列表] [常用子句] [其它子句]
如果没有指定类型,则复制一个与当前的表相同的数据表。

复制表的结构
copy structure to filename [fields字段名列表]
复制任何文件:
copy file 源文件to 目的文件
如果用此命令复制表,表须关闭
从磁盘上删除任意文件:
(1)erase filename|?
(2)delete file [filename|?]
任意文件改名(或文件移动到另一文件夹):
rename filename1 to filename2
其中filename1和filename2都可以包含路径。

如二者不在同一文件夹,则将filename1移动到filename2所在的文件夹。

显示一个文件夹中的文件信息:
dir | directory [on drive]
从磁盘上删除一个文件夹:
rd | redir 文件夹名
在磁盘上建立一个文件夹:
md | mkdir文件夹名
六、数据的复制与传送
单个记录与数组间的数据传送
当前记录→数组或内存变量:
scatter [fields字段名列表][memo]to 数组名[blank] | memvar [blank]
其中[blank]表示建立一个空元素的数组。

如果用memvar子句,则表示将各字段的值复制到同名同类型的内存变量。

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

数组或内存变量→当前记录
gather from 数组名| memvar [fileds字段名列表] [memo]
用同名的内存变量或数组中的第一行置换当前记录,如果数组为多行的二维数组,也只用第
一行。

成批记录与数组间的数据传送
表→数组:
copy to array arrayname [常用子句]
数组→表:
(1) append from array arrayname [ for 条件][fields字段名列表]
用内存数组的值加在数据表的尾部,数据中的一行对应一个新记录,一列对应一个字段。

(2) replace from array数组名[常用子句]
用内存数组的值更新数据表中符合条件的记录。

查询结果→数组:
select ……into array arrayname
将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][descending]
删除索引
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 条件][to内存变量名|to array 数组名]
求平均值:
average [表达式列表];
[范围] [for 条件] [while 条件][to内存变量名|to array 数组名]
对当前表中数值型字段进行分组求和:
total to tablename on 字段名[常用子句]
其中tablename为存放结果的表文件名,字段名为确定求和分组的字段。

计算:
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
commands
[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变量名列表
private all[like | except 通配符]
定义局部变量
local 变量名列表
local [array] 数组名1(行1,列1)[, 数组名2(行2,列2) [,…>
显示各种信息:
list …(格式见有关手册)
display …(格式见有关手册)
输出提示信息:
wait [<提示信息>] [to <内存变量>];
[window[at[<行>,< 列>] [nowait>;
[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 value | reference
如设置为to value,表示按值传递。

执行一个外部命令或程序:
run 命令或程序
在指定的位置显示或打印:
@行,列say …
在指定的位置显示表达式的值,并等待用户输入,将输入值赋给一变量:
@行,列say 表达式get 变量名[default 表达式]
read
例:
@2,2 say "请输入金额: " get nmoney default 50
read
此例先在第2行、第2列显示"请输入金额:
",等待用户输入一个数值,将用户输入值赋给变量nmoney,如果用户不输入数值(直接按回车),则将50赋给nmoney。

请注意在下一行不能漏掉“read”。

相关文档
最新文档