第7章 记录定位与查询.pptVIP

  • 5
  • 0
  • 约2.76千字
  • 约 18页
  • 2018-06-27 发布于福建
  • 举报
第7章 记录定位与查询

第7章 记录的定位与查询 * * 7.1 记录的定位概念 无条件记录定位:goto skip 有条件记录定位:直接(顺序)定位和索引(快速)定位 定位命令仅仅是对记录指针进行定位的一种操作,它并不能显示定位的记录内容。如要显示,则需要使用并且只能使用Display命令。 7.2 顺序(直接)定位 所谓顺序定位是指在表中从第一条记录开始,按照顺序搜索表,把记录指针定位在满足条件的第一条记录上。 顺序定位适合于复杂条件或小型表的定位。 命令格式: 1)找首条: Locate For 条件表达式 [范围] 2)找后续(继续查询): Continue 按照Locate指定的条件继续定位下一条记录 参数说明: ◆ Locate是直接在表文件(不需要对表进行排序或索引)中,按照[范围]、For条件表达式从表文件的头至尾顺序来定位符合条件的第一条记录。如果存在多条满足For条件表达式的记录,可以使用Continue命令继续定位下一条记录。 ◆ Continue命令的作用是从当前相匹配记录的下一条记录位置开始,继续执行由Locate命令指定的范围、满足条件的下一条记录的定位操作。Continue只能和Locate配套使用,不能单独使用。 ◆ 如果Locate命令定位成功,即在当前表中找到了一条与条件相匹配的记录,就将记录指针指向该条记录。这时,Found()函数返回逻辑真.T.,Eof()函数返回逻辑假.F.。Recno()函数返回相匹配记录的记录号。 如果Locate命令定位不成功,即在当前表中没有找到任何一条与条件相匹配的记录,则Found()函数返回逻辑假.F.,Eof()函数返回逻辑真.T,Recno()函数返回Recc()+1的值。 ◆ Locate 命令支持模糊查询,也就是说,只要知道查询数据的部分内容时(主要指字符型数据)就可以进行查询,实现模糊查询要用到包含函数$。 例:在学生挡案表.Dbf表中,定位显示班级为“99212”并 且籍贯为“浙江”的记录。 Use 学生挡案表 Locate For 班级=”99212”.And.籍贯=”浙江” Display 显示第一条满足条件的记录 ? Found() 返回逻辑真.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 是否有记录显示? 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() Found()函数为.T. Display 显示第二条”王”姓记录 Continue “End Of Locate Scope”显示定位结束 ?Eof() Eof())函数为.T. 7.3 索引定位 索引定位是一种快速定位记录的方法,利用索引定位将明显提高查询效率,适用于大型表的查询。 它要求数据表文件的记录是有序的,所以,事先必须对数据表文件进行索引,而且要求查询内容所在的字段或表达式必须是索引文件的索引关键字段或表达式。 (查什么按什么索引) 索引定位

文档评论(0)

1亿VIP精品文档

相关文档