SCAN ... E N D S C A N 命 令

在当前选定的表中移动记录指针
并对每一个满足指定条件的记录执行一组命令
语 法
SCAN [NOOPTIMIZE]
[ Scope ] [FOR lExpression1 ] [ W H ILE lExpression2 ] [ Commands ]
[LOOP]
[EXIT] ENDSCAN
参 数 描 述
NOOPTIMIZE
防 止
SCAN 的 Rushmore 优 化









有
关 详 细 内 容 请 参 阅 稍 后 的 SET OPTIMIZE 命 令 和 M icrosoft
Visual FoxPro 6.0 中 文 版 程 序 员 指 南 第 十 五 章 优 化 应 用 程
序 中 的 掌 握Rushmore 技 术
Scope

指
定 扫 描 记 录 的 范 围 只 有 范 围 之 内 的 记 录 才 可 能 扫 描 到
Scope 子 句 有


ALL
NEXT nRecords RECORD nRecordNumber 和 REST


SCAN
的默认范围是所有记录 ALL
FOR lExpression1




只
有 使 表 达 式 lExpression1 计 算 为 真 (.T.) 的 记 录 才 对 其 执
行 命 令 包含 FOR 子 句 可 以 筛 选 出 不 想 扫 描 的 记 录
当表达式
lExpression1 是可优化表达式时 Rushmore 将优化 SCAN ... FOR 命令创


建的查询
为使系统获得最佳性能 应在 FOR 子句中使用可优化的表达式


有关详细内容
请参阅稍后的 SET OPTIMIZE 命 令 和
M icrosoft Visual FoxPro





6.0
中 文 版 程 序 员 指 南 第 十 五 章 优 化 应 用 程 序 中 的 掌 握
Rushmore 技术
W H ILE lExpression2







指
定 一 个 逻 辑 表 达 式 lExpression2 作 为 执 行 命 令 的 条 件 只
要 逻 辑 表 达 式 计算 为 真 就 对 记 录 执 行 命 令 直 至 遇 到 使 表
达 式 不 为 真 (.T.) 的 记 录为 止
Command s
指 定
要 执 行 的 Visual FoxPro 命 令
LOOP
把 控
制 权 直 接 返 回 到 SCAN 命 令 LOOP 可 以 放 在 SCAN 到 ENDSCAN
之 间
的 任 何 地 方
EXIT

把
程 序 的 控 制 权 从 SCAN ... ENDSCAN 循 环 语 句 中 交 给 ENDSCAN 下
面 的命 令 EXIT 可 以 放 在 SCAN 到 ENDSCAN 之 间 的 任 何 地 方
ENDSCAN
标 志
SCAN 过 程 的 结 束
说 明



SCAN
命令自动将记录指针移到下一条满足指定条件的记录 并执行相应的命令块
可以在 ENDSCAN 同一行的后面加一些注释 注释在程序编译和执行时不起作用
示 例
以下
示例 使用了 SCAN ... ENDSCAN 循环语句显示位于瑞典 (Sweden) 的公司
CLOSE DATABASES
OPEN DATABASE (HOME(2) + 'Data\testdata') USE customer && 打开 Customer 表CLEAR
SCAN FOR UPPER(country) = 'SWEDEN'
? contact, company, city
ENDSCAN
请 参 阅
DO CASE ... ENDCASE , DO WHILE ... ENDDO , FOR ... ENDFOR
