Vfp命令.docx

您所在的位置:网站首页 vfp中update的用法 Vfp命令.docx

Vfp命令.docx

2023-04-13 15:43| 来源: 网络整理| 查看: 265

Vfp命令.docx

《Vfp命令.docx》由会员分享,可在线阅读,更多相关《Vfp命令.docx(33页珍藏版)》请在冰豆网上搜索。

Vfp命令.docx

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 

示例 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个记录

 

REST当前记录之后所有记录

  

 3.选择字段

 

 FIELDS选择输入/输出的字段。

 

 4.限制条件

 

 FOR/WHILE

 

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

 

¨        命令格式规则

 

 命令的行为单位,一行书写不完,在未尾加上“;”第二行接着写。

 

 必须以命令动词开头,动词后的短语顺序不限。

 

 命令中大小写字母等效。

 

 命令动词和关键字可以只写前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)



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3