Show/Hide Toolbars

XSharp

Note该命令在头文件中定义,将由 X# 预处理器预处理为函数调用。如果禁用标准头文件 (-nostddefs),该命令将不可用。如果告诉编译器使用不同的标准头文件(-stddef ),则此命令也可能不可用。

用途

在当前选定的表中移动记录指针,并为符合指定条件的每条记录执行一组命令。

 

SCAN [NOOPTIMIZE] [Scope] [FOR lExpression1] [WHILE lExpression2]
  [Commands]
  [LOOP]
  [EXIT]
ENDSCAN

参数

NOOPTIMIZE 阻止 SCAN 的 Rushmore 查询优化。
更多信息,请参阅 SET OPTIMIZE 命令和使用 Rushmore 查询优化加快数据访问速度。

 

Scope 指定要扫描的记录范围。只扫描范围内的记录。范围子句有 ALL、NEXT nRecords、RECORD nRecordNumber 和 REST。有关范围子句的更多信息,请参阅 Scope 子句联机主题。SCAN 的默认范围是所有记录 (ALL)。
 
FOR lExpression1 仅对 lExpression1 值为 true (.T.) 的记录执行命令。使用 FOR 子句可以过滤掉不想扫描的记录。
如果 lExpression1 是一个可优化的表达式,Rushmore 会优化用 SCAN ... FOR  创建的查询。为获得最佳性能,请在 FOR 子句中使用可优化表达式。
更多信息,请参阅 SET OPTIMIZE 命令和使用 Rushmore 查询优化来加快数据访问速度。

 

WHILE lExpression2 指定一个条件,只要 lExpression2 的值为 true (.T.) 就执行命令。

 

Commands 指定要执行的 Visual FoxPro 命令。

 

LOOP 将控制直接返回 SCAN。LOOP 可以放在 SCAN 和 ENDSCAN 之间的任何位置。

 

EXIT 将 SCAN ... ENDSCAN 循环内的程序控制转移到 ENDSCAN 之后的第一条命令。EXIT 可以放在 SCAN 和 ENDSCAN 之间的任何位置。

 

ENDSCAN 表示 SCAN 程序结束。

备注

SCAN 会自动将记录指针移动到符合指定条件的下一条记录,并执行命令块。

您可以在同一行的ENDSCAN后面添加注释。在程序编译和执行过程中,注释将被忽略。

 

SCAN ... ENDSCAN确保在达到ENDSCAN时,Visual FoxPro 重新选择 SCAN ... ENDSCAN循环开始时的当前表。

 

示例

下面的示例使用 SCAN ... ENDSCAN 循环显示在 Sweden(瑞典) 的所有公司。

 
USE customer  && Opens Customer table
CLEAR
SCAN FOR UPPER(country) = 'SWEDEN'
  ? contact, company, city
ENDSCAN

程序集

XSharp.RT.DLL

See Also

DO CASE Statement

DO WHILE Statement

FOR Statement

FOREACH Statement

SWITCH Statement