Note | 该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。 |
恢复待处理的定位。
CONTINUE
CONTINUE 从当前记录位置开始搜索符合当前工作区最近执行的定位条件的下一条记录(可以使用 LOCATE 命令或 VODBLocate() 或 VODBSetLocate() 函数设置定位条件)。(您可以使用 LOCATE 命令或 VODBLocate() 或 VODBSetLocate() 函数设置定位条件)。
搜索在找到匹配记录或遇到文件结束时终止。 如果 CONTINUE 成功,匹配记录将成为当前记录, Found() 返回 TRUE;如果不成功,Found() 返回 FALSE。
每个工作区都可以有一个激活的定位条件。 在指定新的定位条件之前,定位条件一直处于待定状态。
范围和 WHILE 条件: 定位条件的范围和 WHILE 条件将被忽略;只有 for 条件与 CONTINUE 一起使用。 如果您使用带有 while 条件的 LOCATE 命令,并希望继续搜索匹配记录,请使用 SKIP,然后重复原来的 LOCATE 命令,并添加 REST 作为范围。
此示例扫描 SALES.DBF 中某个销售员的记录,并显示运行中的总销售额:
LOCAL nRunTotal := 0
USE sales NEW
LOCATE FOR Sales->Salesman = "1002"
DO WHILE Found()
? Sales->SalesName, nRunTotal += Sales->Amount
CONTINUE
ENDDO
此示例演示了在待定 LOCATE 作用域包含 WHILE 条件时如何继续:
LOCAL nRunTotal := 0
USE sales INDEX salesman NEW
SEEK "1002"
LOCATE REST WHILE Sales->Salesman = "1002";
FOR Sales->Amount > 5000
DO WHILE Found()
? Sales->Salesname, nRunTotal += Sales->Amount
SKIP
LOCATE REST WHILE Sales->Salesman = "1002";
FOR Sales->Amount > 5000
ENDDO
XSharp.RT.DLL
DbContinue(), DbLocate(), EoF(), Found(), LOCATE, SEEK