LOCATE 命令

搜索匹配指定值或条件的第一个记录,或者移至指定的记录号。

语法

LOCATE {IF 测试 <WHILE 测试> <FIRST 范围|NEXT 范围>|RECORD 数字}

参数

名称 描述

IF 测试

要搜索的值或条件。您必须将字符字面量值放在引号中,将日期时间值放在反引号中。

WHILE 测试

可选

一个条件表达式,它必须为真以便处理每个记录。该命令被一直执行到条件的计算结果为假或者到达表的末尾为止。

说明

如果您将 WHILE 与 FIRST 或 NEXT 结合使用,请在达到一个限制时立即记下处理步骤。

FIRST 范围 | NEXT 范围

可选

要处理的记录数:

  • FIRST 从第一个记录开始处理,直到达到指定的记录数为止
  • NEXT 从当前选定的记录开始处理,直到达到指定的记录数为止

请使用范围指定要处理的记录数。

如果您省略 FIRST 和 NEXT,则会默认处理所有记录。

RECORD 编号

要定位的记录号。

示例

查找与指定值匹配的第一个记录

下列示例说明如何使用 LOCATE 在表中查找特定值的第一个实例:

LOCATE IF Vendor_Name = "United Equipment"
LOCATE IF Vendor_Name = "Uni"
LOCATE IF 发票金额 > 1000
LOCATE IF 发票日期 = `20141231`

查找与指定的条件或表达式匹配的第一个记录

下列示例说明如何使用 LOCATE 在表中查找特定条件或表达式的第一个实例:

LOCATE IF Vendor_Name = "United Equipment" AND Invoice_Amount > 1000 AND Invoice_Date > `20140930`
LOCATE IF Vendor_City = v_city

按记录号查找记录

以下示例说明如何使用 LOCATE 移至表中的特定记录:

LOCATE RECORD 50

备注

有关此命令工作方式的详细信息,请参阅选择第一个匹配记录

工作原理

使用 LOCATE 命令可直接移至表中匹配指定值或条件的第一个记录。

如果找到指定的值或条件,将选择表中的首个匹配记录。如果找不到指定的值或条件,则表会定位到第一个记录。

您还可以使用 LOCATE 直接移至特定记录号

LOCATE 与 FIND 和 SEEK 之比较

与 FIND 和 SEEK 命令,LOCATE 命令并不局限于搜索索引表或单个字符域。使用 LOCATE,您可以搜索任何类型的字面量,或搜索使用任何数据类型或数据类型混合的表达式。

当用于搜索非索引表时,LOCATE 命令必须顺序处理表中的每条记录,因此可能比 FIND 和 SEEK 慢得多。所需的处理时间依赖于表的大小、匹配记录的位置以及您是否使用 WHILE、FIRST 或 NEXT 减小搜索的范围。

支持不完全匹配

对于字符搜索,支持不完全匹配。搜索值可被包含在要搜索的一个或多个域中更长的值中。但是,搜索值必须出现在域的开头才能形成匹配。

启用或禁用不完全匹配

您可以使用 SET 命令或者选项对话框中的设置启用或禁用不完全匹配:

启用不完全匹配 禁用不完全匹配

指定:SET EXACT OFF

取消选择:选项对话框中的精确字符比较工具 > 选项 > 表

结果:搜索值可被包含在要搜索的一个或多个域中更长的值中。搜索值必须出现在域的开头才能构成匹配。

指定:SET EXACT ON

选择:选项对话框中的精确字符比较工具 > 选项 > 表

结果:搜索值必须完全匹配域中的值才能构成匹配。

有关 SET EXACT 的详细信息,请参阅SET 命令

有关精确字符比较选项的详细信息,请参阅表选项