VFP第9部分(查询统计及扫描循环)解析课件.ppt
《VFP第9部分(查询统计及扫描循环)解析课件.ppt》由会员分享,可在线阅读,更多相关《VFP第9部分(查询统计及扫描循环)解析课件.ppt(40页珍藏版)》请在三一办公上搜索。
1、数据表的查询(P67页),表中记录的查询就是在表的所有记录中查找满足条件的记录,并把记录指针定位在要查询的记录上。这里介绍2种传统查询方法:顺序查询和索引查询。 1)顺序查询(条件定位) 顺序查询是一种按照记录的排列顺序,在表文件中逐个地查找满足条件的记录,查询速度较慢。 (1)LOCATE命令 格式:LOCATE 范围 FOR|WHILE 功能:按顺序搜索数据表,并将记录指针定位在满足条件的第一条记录上。,(2)CONTINUE命令 格式:CONTINUE 功能:LOCATE命令执行后继续移动记录指针到下一条满足条件的记录。,说明:LOCATE命令在指定范围内查找满足条件的第一条记录,并将该
2、记录置为当前记录。如果找不到符合条件的记录,则显示“已到定位范围末尾”;缺省范围子句为ALL。CONTINUE命令只能放在LOCATE命令后使用;可多次执行CONTINUE命令。若LOCATE发现一条满足条件的记录,可使用 RECNO()返回该记录号,且FOUND()函数的返回值为“真”(.T.),EOF( )函数的返回值为“假”(.F.)。,locate 范围 for ,命令格式:,继续查找命令,命令格式:,continue,不能单独使用,【例】 在学生档案表(dab.dbf)中找出计算机1班的前2位同学,并将记录输出。USE dabLOCATE ALL FOR 专业班级=计算机1班? FO
3、UND() & 结果为.T.DISPLAYCONTINUE & 查找满足条件的下一记录? FOUND()DISPLAYUSE,2)索引查询(p79页) 索引查询是在数据表文件建立了索引的基础上进行的,因此必须打开相应的索引文件。打开索引后,记录将按索引关键字值升序或降序排列,查询的速度比顺序查询要快得多。 (1)FIND命令 格式:FIND| 功能:在索引文件中查找索引关键字值与指定的字符串或数值常数相等的记录。,找什么索引什么,说明:FIND只能找C、N型数据,字符串常量可不加定界符;字符串变量前面必须用宏代换函数&。FIND找到了与索引关键字相匹配的记录,则 RECNO()返回匹配记录的记
4、录号;FOUND()返回“真”(.T.);EOF()返回“假”(.F.)。FIND命令找到的是与查询数据相匹配的第一条记录,没有继续查询命令。,(2)SEEK命令格式:SEEK 功能:在索引文件中查找索引关键字值与指定表达式值相等的记录。 说明:只能在索引文件打开后使用 SEEK命令。SEEK命令查找的是表达式,表达式可以是C、N、D、L型的常量、变量及其组合。查找的字符串常量必须用定界符;变量不用&函数。如果 SEEK找到了与索引关键字相匹配的记录,则 RECNO()返回匹配记录的记录号;FOUND()返回“真”(.T.);EOF()返回“假”(.F.)。若找不到相匹配的关键字,则 RECN
5、O()返回表中记录个数加 1。FOUND()返回“假”(.F.);EOF()返回“真”(.T.)。,find |&seek |,可以不加引号,只能是字符、数值和日期表达式,【例】使用FIND命令和SEEK命令在学生档案表(dab.dbf)中按如下要求分别查找满足条件的第一条记录。查找姓名为“那措央中”的记录。查找1987年出生的男生记录。USE dab INDEX ON 姓名 TAG xmsyFIND 那措央中 &或 SEEK 那措央中 DISPLAYINDEX ON 性别+RIGH(DTOC(出生日期),2) TAG xbrq SEEK 男+ 87 & 按表达式的值查找?FOUND() &
6、根据FOUND()的值判断查找结果,【例】:逐条显示学生表中84年出生的学生的信息。,clearuse 学生do while .not.eof()if year(出生日期)=1984 dispendifskip enddousecancel,循环体,方法一:,clearuse 学生Locate for year(出生日期)=1984 do while .not.eof()dispcontinue enddousecancel,方法二:,扫描循环(scanendscan循环) 格式: (见教科书146页,练习册148页),该循环只对数据表中的指定记录逐个进行某种处理,方法三:,clearuse
7、学生scan for year(出生日期)=1984 dispendscanusecancel,当循环 go top do whil not eof() 处理一个记录 skip endd,扫描循环scan 处理一个记录ends,例:在student.dbf中输入学生姓名,查询该学生的信息。(实验14 任务1(1) ),方法一: clear use student accept 请输入学生姓名: to xm locate for 姓名=xm if found() display else ?查无此人 endif use return,方法二:clearuse studentindex on 姓名
8、 tag sxmaccept 请输入学生姓名: to xmseek xmif found()dispelse ?查无此人endifusereturn,例:在student.dbf中统计江苏籍学生的人数。 (实验14 任务1(1) ),方法一: clear use student store 0 to rs,zf do while not eof() if 籍贯=江苏 rs=rs+1 endif skip enddo ? rs use return,方法二: clear use student rs=0 locate for籍贯=江苏 do while found() rs=rs+1 conti
9、nue enddo ?rs use return,方法三: clear use student rs=0 scan for籍贯=江苏 rs=rs+1 endscan ?rs use return,例: 对学生表逐条统计560分以上的学生人数,并显示。,数据表的统计运算(P79-81),1)统计记录个数命令格式:COUNT 范围FOR|WHILE TO 功能:统计当前数据表中指定范围内满足条件的记录个数。统计主要是对于数据表中的记录数、数字型字段进行纵向统计。 说明:如果省略范围和FOR|WHILE ,则对当前表中所有记录进行统计。TO 选项是将统计结果存于内存变量中。,【例】统计学生档案表(d
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VFP 部分 查询 统计 扫描 循环 解析 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-1481587.html