Vfp命令.docx |
您所在的位置:网站首页 › vfp中update的用法 › Vfp命令.docx |
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 示例 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 |