表不必存在索引。
参考一下帮助就有:
LOCATE 命令
请参阅 示例
全部折叠 全部展开
按顺序搜索表,从中找到与指定的逻辑表达式相匹配的第一条记录。
LOCATE [FOR lExpression1]
[Scope]
[WHILE lExpression2]
[NOOPTIMIZE]
参数
FOR lExpression1
按顺序搜索当前表,从中找到与逻辑表达式 lExpression1 相匹配的第一条记录。如果 lExpression1 是一个可优化表达式,则 Rushmore 查询优化技术将优化由 LOCATE FOR 创建的查询。为了获得最佳性能,应在 FOR 子句中使用可优化表达式。更多的信息,请参见 SET OPTIMIZE 和 使用 Rushmore 优化数据访问速度。
Scope
指定要查找记录的范围。近查找在范围中的记录。Scope 子句有:ALL、NEXT nRecords、RECORD nRecordNumber、和 REST。包含 Scope 子句的命令仅对活动工作区中的表起作用。LOCATE 的默认范围是所有记录(ALL)。
WHILE lExpression2
指定一个条件,只要逻辑表达式 lExpression2 结果为真(.T.),就继续查找记录。
NOOPTIMIZE
禁止对 LOCATE 的 Rushmore 查询优化。更多的信息,请参见 SET OPTIMIZE 和 使用 Rushmore 优化数据访问速度。
说明
表不必存在索引。
如果使用不包含 FOR 表达式的 LOCATE 命令,则 Visual FoxPro 将记录指针定位在第一个逻辑记录上。这在使用了筛选或 DELETED 为 ON 时,比使用 GO TOP 更快。
如果 LOCATE 找到了匹配的记录,则可以用 RECNO( ) 返回匹配记录的编号。如果找到匹配记录,则 FOUND( ) 返回真(.T.),EOF( ) 返回假(.F.)。如果 SET TALK 为 ON,则显示匹配记录的编号。
LOCATE 找到匹配记录后,可以使用 CONTINUE 继续寻找表中的其它匹配的记录。在执行 CONTINUE 时,查找操作从满足条件记录的下一条记录开始继续执行。您可以重复使用 CONTINUE 命令,直至达到范围尾或表尾。
如果没有找到匹配记录,则 RECNO( ) 返回比表中记录数大 1 的值,FOUND( ) 返回假(.F.),EOF( ) 返回真(.T.)。
LOCATE 和 CONTINUE 作用于当前工作区。如果选择了另外的工作区,则当重新选择原来工作区时,可以继续原来的搜索过程。