记录的定位与查询

上传人:gp****x 文档编号:243395144 上传时间:2024-09-22 格式:PPT 页数:18 大小:36KB
返回 下载 相关 举报
记录的定位与查询_第1页
第1页 / 共18页
记录的定位与查询_第2页
第2页 / 共18页
记录的定位与查询_第3页
第3页 / 共18页
点击查看更多>>
资源描述
,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第7章 记录的定位与查询,1,7.1 记录的定位概念,无条件记录定位:goto skip,有条件记录定位:,直接(顺序)定位和索引(快速)定位,定位命令仅仅是对记录指针进行定位的一种操作,它并不能显示定位的记录内容。如要显示,则需要使用并且只能使用Display命令。,2,7.2 顺序(直接)定位,所谓顺序定位是指在表中从第一条记录开始,按照顺序搜索表,把记录指针定位在满足条件的第一条记录上。,顺序定位适合于复杂条件或小型表的定位。,命令格式:,1)找首条:,Locate For 范围,2)找后续(继续查询):,Continue,&按照Locate指定的条件继续定位下一条记录,3,参数说明:, Locate是直接在表文件(不需要对表进行排序或索引)中,按照范围、For从表文件的头至尾顺序来定位符合条件的第一条记录。如果存在多条满足For的记录,可以使用Continue命令继续定位下一条记录。, Continue命令的作用是从当前相匹配记录的下一条记录位置开始,继续执行由Locate命令指定的范围、满足条件的下一条记录的定位操作。Continue只能和Locate配套使用,不能单独使用。,4, 如果Locate命令定位成功,即在当前表中找到了一条与条件相匹配的记录,就将记录指针指向该条记录。这时,Found()函数返回逻辑真.T.,Eof()函数返回逻辑假.F.。Recno()函数返回相匹配记录的记录号。,如果Locate命令定位不成功,即在当前表中没有找到任何一条与条件相匹配的记录,则Found()函数返回逻辑假.F.,Eof()函数返回逻辑真.T,Recno()函数返回Recc()+1的值。, Locate 命令支持模糊查询,也就是说,只要知道查询数据的部分内容时(主要指字符型数据)就可以进行查询,实现模糊查询要用到包含函数$。,5,例:在学生挡案表.Dbf表中,定位显示班级为“99212”并,且籍贯为“浙江”的记录。,Use 学生挡案表,Locate For 班级=”99212”.And.籍贯=”浙江”,Display &显示第一条满足条件的记录,? Found() &返回逻辑真.T.,? Eof() &返回逻辑假.F,Continue,Display &无记录显示,? Found() &返回逻辑假.F.,? Eof() &返回逻辑真.T,Use,6,例:在学生挡案表.Dbf表中,定位计算机系99级或98级并且年龄小于20的学生。注:学号的第一、二位表示年级,第三位为“2”的表示计算机系。,Use 学生挡案表,Locate For (Subs(学号,1,3)=”992” .Or. Subs(学号,1,3)=”982”).And.年龄20,?Found() &如Found()函数为.T.,?Eof() & Eof()的结果是什么?,Display &是否有记录显示?,Continue &继续定位下一个记录,如果不用 Continue而用Locate For (Subs(学号,1,3)=”992”.Or.Subs(学号,1,3)=”982”).And.年龄23,其结果会如何?,?Found() & Found()函数为.F说明什么?,?Eof() & Eof()的结果是什么?,7,例: 在学生挡案表.Dbf表中,查找姓“王”的学生。,Use 学生挡案表,Locate For Subs(姓名,1,2)=”王”,&如果用Locate For 王$姓名可能会产生什么问题?,Display &显示查询结果,Continue &继续定位查询下一个记录,?Found() & Found()函数为.T.,Display &显示第二条”王”姓记录,Continue,&“End Of Locate Scope”显示定位结束,?Eof() & Eof()函数为.T.,8,7.3 索引定位,索引定位是一种快速定位记录的方法,利用索引定位将明显提高查询效率,适用于大型表的查询。,它要求数据表文件的记录是有序的,所以,事先必须对数据表文件进行索引,而且要求查询内容所在的字段或表达式必须是索引文件的索引关键字段或表达式。,(查什么按什么索引),9,索引定位有两种命令格式:,格式一:Seek ,格式二:Find ,1.FIND命令,(1) 命令方式,命令格式:,FIND /,功能:,在打开的以查询内容所在字段为索引关键字的索引文件中,快速查找关键字段,等于,或的第一个记录。,10,说明:, 执行命令前,必须首先,建立以查询内容所在字段或表达式为索引关键字的索引文件,,若已存在则打开该索引文件,且将其设置为主索引。, FIND命令通常适用于,字符数据类型及数值型,,字符串中的字符可以不用定界符。, 可以用内存变量代替字符串作为查找的数据,但,必须用宏代换函数(&),。, 如果查找成功,则把记录指针指向逻辑顺序中第一条符合条件的记录,且FOUND()函数的值为.T.,否则,记录指针指向文件未尾,FOUND()函数的值为.F.。,11,例题:,例题1:在学生档案中,用FIND命令查找学号为“9832101”的学生。,USE 学生档案表,index on 学号 to xh,FIND 9832101,DISPLAY,例题2.在学生档案表.DBF数据表文件中,以变量的形式,用FIND命令查找姓名为 “刘丽红”的学生(以姓名为索引关键字的索引文件XM.IDX已建立)。,12,2.SEEK命令,FIND命令不能对日期型和逻辑型的数据进行查找,在某些情况下使用起来不方便,为此,系统中又提供了功能更强的SEEK命令。,格式:SEEK ,功能:在打开的以查询内容所在字段为索引关键字的索引文件中,快速查找关键字段等于值的第一个记录。,13,其中:,(1)SEEK命令适用于一切数据类型(C、N、D、L),表达式可以是常量、变量和函数所组成,但必须与索引表达式一致。表达式为C、D、L(.T.,.F.)常量时,必须使用相应的定界符,如:“ ”、 。,(2)表达式为变量时,要直接使用,,不,需要用宏代换函数。,(3)如果查找成功,则把记录指针指向逻辑顺序中第一条符合条件的记录,且FOUND()函数的值为.T.,否则,记录指针指向文件未尾,FOUND()函数的值为.F.。,14,例题3:在学生档案XSDA.DBF数据表文件中,用SEEK命令查找学号为“9921201”的学生(以学号为索引关键字的索引文件XH.IDX已建立)。,USE xsda INDEX xh,&打开以学号为索引关键字的索引文件XH.IDX,SEEK “9921201” &必须使用定界符,DISPLAY,15,例题4.在学生档案表.DBF数据表文件中,以变量的形式,用SEEK命令查找姓名为“刘丽红”的学生(以姓名为索引关键字的索引文件XM.IDX已建立)。,USE 学生档案表 INDEX xm,STORE “刘丽红” TO a1,SEEK a1 &不需使用宏代换函数,DISPLAY,例题5.在学生档案XSDA.DBF数据表文件中,以常量的方式查找班级为“98321”、籍贯为“浙江”的学生。,16,小结:,LOCATE,和,SEEK,、,FIND,都是用于在数据表文件中查询,定位记录指针,即把记录指针定位在满足条件的记录,上。特别强调:仅仅是定位记录指针。,如要显示定位的,记录内容,则需要用,DISPLAY,命令。,(2) LOCATE,和,SEEK,、,FIND,的不同之处:,LOCATE,是顺序查询定位,可以直接利用原数据表进行,定位操作,而,SEEK,、,FIND,命令是索引查询定位,必须,首先对原数据表按定位数据所在字段或表达式进行索,引,建立相应的索引文件或打开相应的索引文件、索引,标识的前提下才能进行定位操作。,LOCATE,和,CONTINUE,相配合可以连续查询定位多条记,录,而,SEEK,、,FIND,只能查询定位单条记录。,LOCATE,是用条件表达式的形式来定位,而,SEEK,、,FIND,是用常量、变量或变量组成的表达式的形式来定位。,17,(3) SEEK和FIND的不同之处:,SEEK命令适用于一切数据类型(C、N、D、L),但若为C、D、L常量时,必须使用相应的定界符,如:“ ”、 、 。表达式为变量时,要直接使用,不需要用宏代换函数。, FIND命令通常适用于字符数据类型,不可用于日期型和逻辑型数据类型。表达式为字符常量时,不须使用相应的定界符。表达式为变量时,不可直接使用,必须使用宏代换函数。,18,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!