已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VFP小结一、基础知识1. 重要函数Max( )min( )abs( )int( )rand( )mod( )round( )& at( )alltrim( )substr( ) Len( )upper( )Lower( )Chr( )asc( )date( )time( )year( )month( )day( )dow( )ctod( )val( )str( )bof( )eof( )found( )recno( )delete( )row( )col( )type( )varitype( )inkey( )2. 数据库操作和表操作2.1. 数据库操作命令建立数据库:create data 打开数据库:open data 修改数据库:modify data关闭数据库:close data2.2. 表操作命令 建立表:VFP命令:create .SQL命令:create table (字段名、类型和宽度) 打开表:use .修改表结构:modify Stru关闭表:use或close all 复制(备份)表结构:copy stru to 新表 复制表:copy to 新表 记录追加:append blankappendfrom 源表 记录的浏览:brow(浏览后可追加、修改、删除)记录显示:List 或 Disp 记录的定位:绝对定位:go 相对定位:skip条件定位:Locate For 条件 Continue索引定位:Find 或 Seek 记录的逻辑删除:Delete恢复:Recall物理删除:pack 和 Zap 记录的修改:Replace 范围 字段名 with 表达式 记录的排序:sort to 新表 on 排序字段 Field . 记录的索引(索引后指针自动指到首记录):建立单一索引(只能升序):index on 索引表达式 to. 建立复合索引(升序、降序均可):index on 索引表达式 tag 建立组合索引:index on 性别 + str(英语,5, 1) to/tag . index on 计算机 + 英语 to/tag . index on str(计算机, 5, 1) + str(英语, 5, 1) to/tag . 记录的统计:统计记录个数:count to 变量 For 统计和:Sum 字段 to 变量 For统计平均值:aver 字段 to 变量 For 计算命令:calculate.To 变量 For分类(组)求和:Total on 分组字段 to 新表 多表操作:表间连接:join with 被连接的表 to 新表 For 连接条件(公共字段相等)表间关联:Set Rela to 父表的关联表达式 into 子表 数组与当前记录之间的数据传递:数组数据传递给当前记录:Gather From 数组 当前记录传递给数组:Scatter To 数组 3. 程序中的常用命令 Set Filter to 过滤条件 Set Delete on/offSet Defa to 默认目录 行,列 say . Get 变量 ReadAccept / input / wait to 变量 Do While EnddoForendforScanEndScanIfelseendifdo case endcaseSet Proc to 过程文件名 LoopExit4. SQL语言4.1. 表结构操作:增加字段:Alter Table 表名 Add 字段名、类型及宽度修改字段属性:Alter Table 表名 Alter 字段名、类型及宽度修改字段名:Alter Table 表名 Rename 字段旧名 to 新名 删除字段:Alter Table 表名 Drop 字段名 删除表:Drop Table 表名 4.2. 表记录操作:添加:insert into 表名 (字段名表) value (字段取值) 修改:Update 表名 Set . Where 条件 删除:dele from 表名 where 条件 4.3. 记录的查询:Select 字段名表 From 表名 Where 记录筛选条件 order by 排序字段 Top 记录数 Group by 分组字段 having 组别筛选条件 to screen / print / file . 或 into Table 表 或 into cursor 临时表二、一些典型问题1. 表间关联与连接问题Set Relation To 表达式 into 子表工作区 &在父表工作区中使用该命令注意:建立关联后,父表指针移动时,子表指针移动到匹配的记录;而子表指针移动时,父表指针保持在原来的位置。1.1. 按公共字段关联(最常用的形式) 例如:sele 1use scoreindex on 学号 to xh&子表要按公共字段索引sele 2use studentset relation to 学号 into a &在父表中发出关联? 学号, 姓名, a.英语&非当前字段前应加别名1.2. 表间无公共字段但有联系字段的关联方法sele 1use departmentindex on 系别号 to xbh&子表按关联表达式索引sele 2use scoreset relation to substr(学号, 5, 2) into a&按表间联系表达式关联1.3. 按记录号关联子表不需索引;无实际意义,仅限于理论考试sele 1use score&子表不需索引sele 2use studentset relation to recno( )+2 into a &子表记录号比父表大21.4. “一父多子”的三表关联方法两个子表按各自的关联字段索引sele 1use departmentindex on 系别号 to xbhsele 2use scoreindex on 学号 to xhsele 3use studentset relation to 系别号 into aset relation to 学号 into b addi& addi表示保留该表已有的关联1.5. “一父一子”的三表关联方法两个子表按各自的关联字段索引sele 1use departmentindex on 系别号 to xbhsele 2use scoreSet relation to substr(学号, 5, 2) into a & 与department无公共字段index on 学号 to xhsele 3use studentset rela to 学号 into b&该表不存在已有的关联,不需addi,加上也不错1.6. 表间连接:Join with 被连接的表 To 新表 For Field &连接时不需要索引sele 1use scoresele 2use studentJoin with a to xs for 学号=a.学号 & With后为被连接的表Use xs&操作连接后的表之前要打开2. 一些典型程序2.1. 显示表中没有的字段。例如:在Score中按学号查询,并显示评价(表中无此字段), 若平均分=60为“合格”,否则“不合格”。显示格式如下:学号 平均分 评价20020101 69.4 合格 use score?学号 平均分 评价&原样显示标题,要加引号do while not eof( )? 学号, 平均分, space(3)&先显示表中有的字段,字段名不加引号do casecase 平均分=60? 合格&表中没有评价,不能用 ? 评价case 平均分=60为合格,否则不合格) ,若不存在,显示”查无此人!”,并可多次查询Select 1Use scoreIndex on 学号 to xhSelect 2Use departmentIndex on 系别号 to sbhSelect 3Use studentSet rela to 学号 into aSet rela to 系别号 into b addiDo while .T.clearaccept “请输入学号:” to xhlocate for 学号=xhif not found( )?”查无此人”else? ”学号 姓名 系名称 评定”?学号, 姓名, b.系名称, space(2)If a.平均分=60? “合格”Else? ”不合格”Endifendifwait “ 继续吗?Y/N ” to ynIf upper(yn)=“N”exitendifenddoClose all例2(反复修改):利用student和score,按学号查询出学号、姓名、英语,并可修改英语成绩,要求可反复多次操作。Select 1Use scoreIndex on 学号 to xhSelect 2Use studentSet rela to 学号 into aDo while .T.clearaccept “请输入学号:” to xhlocate for 学号=xhif not found( )row( )+1, 20 say “查无此人”elserow( )+1, 20 say ”学号” + 学号& 不换行用Row( ),换行用Row( )+1row( )+1, 20 say ”姓名” + 姓名& 加号后的变量不能修改其值row( )+1, 20 say “英语” get a.英语& Get后的变量可修改其值Read & 用. Get 显示初值,用Read修改endifwait “ 继续吗?y/n ” to ynIf upper(yn)=“N”exitendifenddoClose all2.4. 查询出所有满足条件的记录(注意逻辑字段和年龄的输出方法)例如:利用student和score,按姓名查询出所有同名学生的姓名、年龄、政治面貌(根据”团员否”决定)和英语。Select 1Use scoreIndex on 学号 to xhSelect 2Use studentSet rela to 学号 into aaccept “请输入姓名:” to xmlocate for 姓名=xmif not found( )? ”查无此人”else? ”姓名 年龄 政治面貌 英语”Do while not eof( )? 姓名, year(date( )-year(出生日期), iif(团员否=.T., “团员”, “非团员”), a.英语ContinueEnddoendifClose all2.5. 查询满足条件的所有记录,并可反复操作的问题() 。例如:利用student和score,按姓名查询出所有同名学生的姓名和英语,并可反复查询。Select 1Use scoreIndex on 学号 to xhSelect 2Use studentSet rela to 学号 into aDo while .T.accept “请输入姓名:” to xmlocate for 姓名=xmIf not eof( )? ”姓名 英语”Do While Not eof( )? 姓名, a.英语ContinueEnddoElse? “ 查无此人!”EndifWait “继续吗?y/n” to ynIf upper(yn)=”N”ExitEndifEnddoClose all2.6. 一对多表的统计问题。例1:利用student统计各系的团员人数。Sele 1use studentindex on 系别号 to xbhdo while not eof( )s=0xbh=系别号do while 系别号=xbhif 团员否s=s+1Endifskipenddo? xbh + ”系团员人数为: + alltrim(str(s)enddoClose all方法2(利用SQL):Sele 系别号, count(*) as 团员人数 from student where 团员否=.T. group by系别号 into cursor temp? “系别号 团员人数”Do while not eof( )? 系别号, 团员人数SkipEnddoClose all例2:利用score和Department统计各系的英语平均分(学号的第5、6位代表系别号)Sele 1use scoreindex on substr(学号, 5, 2) to xhSele 2Use departmentSet relation to 系别号 into a?”系名称 英语平均分”do while .not. eof( )s=0n=0Sele 1Do while substr(学号, 5, 2)=b.系别号s=s+英语n=n+1skipEnddoSele 2? 系名称, s/nskipenddoClose all方法2:利用统计命令Calculate简化程序Sele 1use scoreindex on substr(学号, 5, 2) to xhSele 2Use departmentSet relation to 系别号 into a?”系名称 英语平均分”do while .not. eof( )Sele 1Calculate Avg(英语) for substr(学号, 5, 2)=b.系别号 to SSele 2? 系名称, SskipenddoClose all2.7. 数学问题。例如:显示2200以内的素数For i=2 to 200x=i-1For j=2 to xIf mod (i, j)=0exitendifEndforIf jx? iendifEndforretu例2:输入10个数,将其升序排列。Dime a(10)For I=1 to 10input 请输入数: to a(i)EndForFor I=1 to 9For j=i+1 to 10if a(i)a(j)T=a(i)a(i)=a(j)a(j)=TEndifEndForEndForFor I=1 to 10? a(i)EndForReturn2.8. 字符图形显示问题。如:九九乘法表、显示金字塔、倒金字塔等。2.9. 字符串操作。如:将输入字符串以相反的顺序显示,统计大写字符个数。2.10. 参数的传递和变量的作用域() 参数传递:当实参是表达式、数组元素或带有括号( ),则该参数按值(单向)传递;若实参是不带括号( )的变量,该参数按地址(双向)传递。全局变量:用Public定义,初值为.F.。从定义起一直存在,直到用Clear all命令清除。局部变量:没有说明时默认为局部变量。在定义该变量的模块及其下级模块中存在。本地变量:用Local定义,初值为.F.,只存在于定义该变量的本模块中。Private :禁止上级程序模块中的指定变量进入本模块。注意:任一模块中都不能有两个变量同名。10例1:Clear alla=1b=2do sub1? a, b&结果为: 2 2ReturnProc sub1Private b&与主程序中的b为不同变量a=2*ab=200Return例2: Clear alla=1b=2do sub2 with a, (b)? a, b &结果为10 30ReturnProc sub2Para c, dc=10d=20a=40&新变量ab=30&主程序中的bReturn例3:clear alla=1b=2do sub3 with a, b? a, b&结果为10 20ReturnProc sub3Para a, bPrivate a, ba=10b=20Return例4:a=1b=2do sub4? a, b&结果为: 2 20ReturnProc sub4b=20 & 与主程序的b为同一个变量Priv b & 此处后的b与主程序的b为不同变量a=2*ab=200例5:Clear alla=1b=2x=3 do sub5 with a, (b)? a, b, x &结果为: 10 200 3ReturnProc sub5Para
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司方面解除合同协议
- 合伙购买厂房合同范本
- 兼职美术老师合同协议
- 卫生间抵押合同协议书
- 购销合同中质量约定的条款
- 营销战略合作协议基本模板
- 口头协议能不能算合同
- 口头合同能否成立协议
- 卖房佣金合同协议模板
- 初三复读生培养协议书
- 2025杭州桐庐县统计局编外招聘2人考试参考题库及答案解析
- 扶贫项目实施方案及资金管理
- 2025中国华腾工业有限公司招聘笔试历年参考题库附带答案详解(3卷合一)
- 机械设计制造及其自动化专升本2025年智能设备联网试卷(含答案)
- 小学数学期末综合评价标准与表格
- 手术过程及准备流程
- 消防安全知识培训课件及考试题库
- 永久起搏器植入术课件
- 中国移动杭州市2025秋招笔试行测题库及答案通信技术类
- 卫生厅课题申报书范文
- 2025年甘肃省平凉市庄浪县第五幼儿园教育集团保健医招聘考试参考试题及答案解析
评论
0/150
提交评论