记录的定位与查询_第1页
记录的定位与查询_第2页
记录的定位与查询_第3页
记录的定位与查询_第4页
记录的定位与查询_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 记录的定位与查询7.1 7.1 记录的定位概念记录的定位概念无条件记录定位:goto skip有条件记录定位:直接(顺序)定位和索引(快速)定位 定位命令仅仅是对记录指针进行定位的一种操作,它并不能显示定位的记录内容。如要显示,则需要使用并且只能使用Display命令。 7.2 7.2 顺序顺序( (直接直接) )定位定位 所谓顺序定位是指在表中从第一条记录开始,按照顺序搜索表,把记录指针定位在满足条件的第一条记录上。 顺序定位适合于复杂条件或小型表的定位。命令格式:1)找首条: Locate For 范围2)找后续(继续查询): Continue &按照Locate指定的条件继续定位

2、下一条记录参数说明: Locate是直接在表文件(不需要对表进行排序或索引)中,按照范围、For从表文件的头至尾顺序来定位符合条件的第一条记录。如果存在多条满足For的记录,可以使用Continue命令继续定位下一条记录。 Continue命令的作用是从当前相匹配记录的下一条记录位置开始,继续执行由Locate命令指定的范围、满足条件的下一条记录的定位操作。Continue只能和Locate配套使用,不能单独使用。 如果Locate命令定位成功,即在当前表中找到了一条与条件相匹配的记录,就将记录指针指向该条记录。这时,Found()函数返回逻辑真.T.,Eof()函数返回逻辑假.F.。Recn

3、o()函数返回相匹配记录的记录号。 如果Locate命令定位不成功,即在当前表中没有找到任何一条与条件相匹配的记录,则Found()函数返回逻辑假.F.,Eof()函数返回逻辑真.T,Recno()函数返回Recc()+1的值。 Locate 命令支持模糊查询,也就是说,只要知道查询数据的部分内容时(主要指字符型数据)就可以进行查询,实现模糊查询要用到包含函数$。例:在学生挡案表.Dbf表中,定位显示班级为“99212”并 且籍贯为“浙江”的记录。 Use 学生挡案表 Locate For 班级=”99212”.And.籍贯=”浙江” Display &显示第一条满足条件的记录 ? Found

4、() &返回逻辑真.T. ? Eof() &返回逻辑假.F Continue Display &无记录显示 ? Found() &返回逻辑假.F. ? Eof() &返回逻辑真.T Use例:在学生挡案表.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 &是否有记

5、录显示? Continue &继续定位下一个记录,如果不用 Continue而用Locate For (Subs(学号,1,3)=”992”.Or.Subs(学号,1,3)=”982”).And.年龄23,其结果会如何? ?Found() & Found()函数为.F说明什么? ?Eof() & Eof()的结果是什么?例: 在学生挡案表.Dbf表中,查找姓“王”的学生。 Use 学生挡案表 Locate For Subs(姓名,1,2)=”王” &如果用Locate For 王$姓名可能会产生什么问题? Display &显示查询结果 Continue &继续定位查询下一个记录 ?Found

6、() & Found()函数为.T. Display &显示第二条”王”姓记录 Continue &“End Of Locate Scope”显示定位结束 ?Eof() & Eof()函数为.T.7.3 7.3 索引定位索引定位 索引定位是一种快速定位记录的方法,利用索引定位将明显提高查询效率,适用于大型表的查询。 它要求数据表文件的记录是有序的,所以,事先必须对数据表文件进行索引,而且要求查询内容所在的字段或表达式必须是索引文件的索引关键字段或表达式。 (查什么按什么索引) 索引定位有两种命令格式:索引定位有两种命令格式:格式一:Seek 格式二:Find 1.FIND1.FIND命令命令(

7、1) 命令方式 命令格式: FIND /功能: 在打开的以查询内容所在字段为索引关键字的索引文件中,快速查找关键字段等于等于或的第一个记录。说明: 执行命令前,必须首先建立以查询内容所在字建立以查询内容所在字段或表达式为索引关键字的索引文件段或表达式为索引关键字的索引文件,若已存在则打开该索引文件,且将其设置为主索引。 FIND命令通常适用于字符数据类型及数值型字符数据类型及数值型,字符串中的字符可以不用定界符。 可以用内存变量代替字符串作为查找的数据,但必须用宏代换函数(必须用宏代换函数(& &)。 如果查找成功,则把记录指针指向逻辑顺序中第一条符合条件的记录,且FOUND()函数的值为.T

8、.,否则,记录指针指向文件未尾,FOUND()函数的值为.F.。例题:例题1:在学生档案中,用FIND命令查找学号为“9832101”的学生。 USE 学生档案表 index on 学号 to xh FIND 9832101 DISPLAY例题2.在学生档案表.DBF数据表文件中,以变量的形式,用FIND命令查找姓名为 “刘丽红”的学生(以姓名为索引关键字的索引文件XM.IDX已建立)。2.SEEK2.SEEK命令命令 FIND命令不能对日期型和逻辑型的数据进行查找,在某些情况下使用起来不方便,为此,系统中又提供了功能更强的SEEK命令。格式:SEEK 功能:在打开的以查询内容所在字段为索引关

9、键字的索引文件中,快速查找关键字段等于值的第一个记录。其中:(1)SEEK命令适用于一切数据类型(C、N、D、L),表达式可以是常量、变量和函数所组成,但必须与索引表达式一致。表达式为C、D、L(.T.,.F.)常量时,必须使用相应的定界符,如:“ ”、 。(2)表达式为变量时,要直接使用,不不需要用宏代换函数。 (3)如果查找成功,则把记录指针指向逻辑顺序中第一条符合条件的记录,且FOUND()函数的值为.T.,否则,记录指针指向文件未尾,FOUND()函数的值为.F.。例题3:在学生档案XSDA.DBF数据表文件中,用SEEK命令查找学号为“9921201”的学生(以学号为索引关键字的索引

10、文件XH.IDX已建立)。 USE xsda INDEX xh &打开以学号为索引关键字的索引文件XH.IDX SEEK “9921201” &必须使用定界符 DISPLAY例题4.在学生档案表.DBF数据表文件中,以变量的形式,用SEEK命令查找姓名为“刘丽红”的学生(以姓名为索引关键字的索引文件XM.IDX已建立)。 USE 学生档案表 INDEX xm STORE “刘丽红” TO a1 SEEK a1 &不需使用宏代换函数 DISPLAY例题5.在学生档案XSDA.DBF数据表文件中,以常量的方式查找班级为“98321”、籍贯为“浙江”的学生。小结小结:(1)LOCATE和SEEK、F

11、IND都是用于在数据表文件中查询 定位记录指针,即把记录指针定位在满足条件的记录 上。特别强调:仅仅是定位记录指针。如要显示定位的 记录内容,则需要用DISPLAY命令。(2) LOCATE和SEEK、FIND的不同之处: LOCATE是顺序查询定位,可以直接利用原数据表进行 定位操作,而SEEK、FIND命令是索引查询定位,必须 首先对原数据表按定位数据所在字段或表达式进行索 引,建立相应的索引文件或打开相应的索引文件、索引 标识的前提下才能进行定位操作。 LOCATE和CONTINUE相配合可以连续查询定位多条记 录,而SEEK、FIND只能查询定位单条记录。 LOCATE是用条件表达式的形式来定位,而SEEK、 FIND是用常量、变量或变量组成的表达式的形式来定位。(3) SE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论