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 程序结束。 |
您可以在同一行的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