Vfp命令.docx
- 文档编号:3457259
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:33
- 大小:40.59KB
Vfp命令.docx
《Vfp命令.docx》由会员分享,可在线阅读,更多相关《Vfp命令.docx(33页珍藏版)》请在冰豆网上搜索。
Vfp命令
Vfp命令
Select*fromX.dbfleft.joinouterXX.dbforder.byXX.dbfintoXXX.dbf
Select*fromhbwhere(djhin(selectdjhfrombhgroupbydjhhaving(count(djh))>1))
UpdaonkshfromAreplxmwithB->xm
select - sql 命令示例
以下示例说明了使用 select ?
sql 用户自定义函数的用法:
示例 1
示例 1 显示了 customer 表中所有的公司名称(来自一个表的一个字段)。
close all
close databases
open database (home
(2) + 'data\testdata')
select pany ;
from customer
示例 2
示例 2 显示了来自两个表中三个字段的内容及两个表基于 cust_id 字段的连接。
两个表均使用了本地别名。
close all
close databases
open database (home
(2) + 'data\testdata')
select pany, b.order_date, b.shipped_on ;
from customer a, orders b ;
where a.cust_id = b.cust_id
示例 3
示例 3 显示了在指定字段只有唯一数据的记录。
close all
close databases
open database (home
(2) + 'data\testdata')
select distinct pany, b.order_date, b.shipped_on ;
from customer a, orders b ;
where a.cust_id = b.cust_id
示例 4
示例 4 以升序次序显示了 country、postalcode 和 company 字段。
close all
close databases
open database (home
(2) + 'data\testdata')
select country, postalcode, company ;
from customer ;
order by country, postalcode, company
示例 5
示例 5 将来自两个表的字段内容存储在第三个表中。
close all
close databases
open database (home
(2) + 'data\testdata')
select pany, b.order_date, b.shipped_on ;
from customer a, orders b ;
where a.cust_id = b.cust_id ;
into table custship.dbf
browse
示例 6
示例 6 显示订单 (order) 日期早于 1994 年 2 月 16 日的记录。
close all
close databases
open database (home
(2) + 'data\testdata')
select pany, b.order_date, b.shipped_on ;
from customer a, orders b ;
where a.cust_id = b.cust_id ;
and b.order_date < {^1994-02-16}
示例 7
示例 7 显示 customer 表中邮政编码与 orders 表的邮政编码相匹配的所有公司名。
close all
close databases
open database (home
(2) + 'data\testdata')
select company from customer a where ;
exists (select * from orders b where a.postalcode = b.postalcode)
示例 8
示例 8 显示 customer 表中公司名以大写的 c 开头,但长度未定的所有记录。
close all
close databases
open database (home
(2) + 'data\testdata')
select * from customer a where pany like "c%"
示例 9
示例 9 显示 customer 表中国家名以大写的 u 开头其后跟着未知字母的所有记录。
close all
close databases
open database (home
(2) + 'data\testdata')
select * from customer a where a.country like "u_"
示例 10
示例 10 以大写方式,输出列为 citylist 显示所有城市名。
close all
close databases
open database (home
(2) + 'data\testdata')
select upper(city) as citylist from customer
示例 11
示例 11 演示了您可以执行在包含百分比符号 (%) 数据上查询的方式。
在百分比之前放置的反斜线 (\) 表示应该将百分比符号当作字符处理,而 escape子句中的反斜线指定为转义字符。
因为在 visual foxpro 的示例表中不包含百分比符号,所以查询没有返回结果。
close all
close databases
open database (home
(2) + 'data\testdata')
select * from customer;
where company like "%\%%" escape "\"
示例 12
示例 12 演示了您可以执行在包含下划线符号 (_) 数据上查询的方式。
在下划线之前放置的反斜线 (\) 表示应该将下划线符号当作字符处理,而 escape子句中的反斜线指定为转义字符。
因为在 visual燜oxpro 的示例表中不包含下划线符号,所以查询没有返回结果。
close all
close databases
open database (home
(2) + 'data\testdata')
select * from customer;
where company like "%\_%" escape "\"
示例 13
在示例 13 中,转义字符使用它自身的含义。
短划线既是转义字符同时也是具有意义字符。
查询返回公司名包含百分号后跟着短划线的所有行。
因为在 visual燜oxpro 的示例表中不包含百分比符号,所以查询没有返回结果。
close all
close databases
open database (home
(2) + 'data\testdata')
select * from customer;
where company like "%-%--%" escape "-"
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/TO
APPENDFROM,COPYFILETO<目标文件>
2.限制记录范围(SCOPE)
ALL 所有记录
NEXT
RECORD<1>第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盘生成一个与正在使用的表结构相同的新表文件MY
COPYSTRUCTRUETOD:
\MY
2.表结构的显示
命令:
LISTSTRUCTURE
DISPLAYSTRUCTURE
例子:
显示当前数据表在结构。
LISTSTRUCTURE
3.表结构的修改
命令:
MODIFYSTRUCTURE
作用:
显示表文件结构,并允许修改此表的结构
说明:
只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。
例子:
修改当前数据表的结构。
MODIFYSTRUCTURE
二.表文件的打开和关闭
1.打开
命令:
USE表名[INDEX索引文件名][EXCLUSIVE]
例子:
打开A盘GZ1数据表。
USEA:
\GZ1
例子:
以独占方式打开当前表文件XX
USEXXEXCLUSIVE
2.关闭
命令:
USE
例子:
关闭当前打开的表。
USE
三.记录指针的定位
1.绝对定位
命令:
GO[TO]n|TOP|BOTTOM
说明:
n定位到第n条记录,TOP定位到最上面一条记录,BOTTOM定位到最下端一条记录
2.相对定位
命令:
SKIP[+|-]n
说明:
它以当前记录为基准前移(-)或后移(+)n个记录,不选任选项,则默认记录指针后移一条记录。
四.表数据的添加
1.记录的追加
命令:
APPEND[BLANK]
例子:
向当前数据表尾部追加记录。
APPEND
例子:
向当前数据表尾部追加一条空记录。
APPENDBLANK
2.记录的插入
命令:
INSERT[BLANK][BEFORE]
例子:
在当前记录后插入一条空记录。
INSERTBLANK
例子:
在第3条记录前插入一条记录。
GO3
INSERTBEFORE
3.用复制方法建新表记录
命令:
COPYTO新表名[范围][FIELDS字段表][FOR条件]
例子:
把当前表中“应发合计”大于1000元的记录复制到新数据表GZ2中。
COPYTOA:
GZ2FOR应发合计>1000
4.从其他表取数据
命令:
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|EDITRECORD5
2.成批自动替换记录
命令:
REPLACE[范围]字段WITH表达式[FOR条件]
例子:
计算各记录“应发合计”字段的值。
REPLACEALL应发合计WITH职务工资+岗位津贴+保留奖金+保留津贴
七.删除记录
1.逻辑删除
命令:
DELETE[范围][FOR条件](打删除标记)
2.物理删除
命令:
PACK(删除有删除标记的记录)
ZAP(删除所有记录)
例子:
删除“职工编号”空白的记录。
DELETEALLFOR职工编号=""
PACK
八.数据表排序
1.物理排序,生成一个新的表文件。
命令:
SORTTO新表名ON字段名[/A][/D][范围][FOR条件]
例子:
把当前表中记录按“应发合计”从大到小重新排序。
SORTTOA:
GZ3ON应发合计/D
2.逻辑排序,生成一个索引文件。
(一)标准索引文件:
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)
3
INT(x)
取整数
INT(3.14)
3
ROUND(x)
四舍五入
ROUND(3.14159,4)
3.1416
MOD(x,y)
求X除以Y的余数
MOD(25,4)
1
MAX(x,y)
求X,Y中的最大值
MAX(7,8)
8
MIN(x,y)
求X,Y中的最小值
MIN(1,2,3)
1
二.字符中操作函数
函数名
操作
例
结果
UPPER(S)
小写字母
UPPER(abc)
ABC
LOWER(S)
大写字母
LOWER(ACD)
acd
LEN(S)
求字符串的长度
LEN("中国1号")
7
AT(S1,S2)
在字符串S2,找字符串S1
AT("H","CHINA")
2
SUBSTR(S,I,N)
在S字符串中的第I个字符起取N个字符
SUBSTR('TECHNOLO',3,3)
CHN
LEFT(S,N)
从字符串S左边取N个字符
LEFT(“中国人”,4)
中国
RIGHT(S,N)
从字符串S右边取N个字符
S=‘12345’
RIGHT(S,3)
345
SPACE(N)
生成N个空格
"合计"+SPACE
(2)+"123"
合计123
TRIM(S)
消除字符串尾部空格
TRIM("姓名 ")
姓名
ALLTRI(S)
消除字符串中所有空格
ALLTRIM("李 丽")
李丽
STUFF(S1,N1,N2,S2)
用字符串S2替换S1中第N1个字符起的N2个字符
STUFF("NOW",2,1,"E")
NEW
&
宏替换
P=“G2”
USE&P
USEG2
三.日期和时间函数
函数名
操作
例
结果
DATE()
求当前日期
DATE()
2001/11/12
DATETIME()
求当前日期和时间
DATETIME()
2001/11/12/0:
22:
33am
YEAR(D)
求年份
YEAR(DATE())
2001
MONTH(D)
求月份(数值)
MONTH(DATETIME())
11
CMONTH(D)
求月份(字符)
MONTH(DATETIME())
Novenber
DAY(D)
求日期
DAY(DATE())
12
DOW(D)
求星期几(数值)
DOW(DATE())
1
CDOW(D)
求星期几(英文)
CDOW(DATE())
sunday
TIME(D)
求当前时间
TIME(DATE())
10:
20:
38am
四.数据类型转换函数
函数名
操作
例
结果
ASC(S)
求第一个字符串的ASCII码
ASC("what")
87
CHR(N)
求ASCII码的字符
CHR(87)
w
STR(R,L,D)
数值转换成字符,L为长度,D为小数位数
X=3.1415
STR(X,6,2)
3.14
VAL(S)
字符串转换为数值
VAL("123")
123.00
CTOD(S)
字符串转日期
CTOD('11/01/2002')
11/01/2002
DTOC(D)
日期转换成字符串
DTOC(DATE())
11/01/2002
DTOS(D)
把日期转成年月日式的字符串
DTOS(DATE())
20021101
CTOT(C)
字符串转成日期时间型
CTOT(11/01/200210:
30:
50am)
11/01/200210:
30:
50am
DTOT(D)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Vfp 命令
![提示](https://static.bdocx.com/images/bang_tan.gif)