R E P L A C E 命 令
更新表的记录内容
语 法
REPLACE FieldName1 W ITH eExpression1 [ADDITIVE] [, FieldName2 W ITH eExpression2 [ADDITIVE]] ...
[ Scope ] [FOR lExpression1 ] [ W H ILE lExpression2 ] [IN n W orkArea | cTableAlias ]
[NOOPTIMIZE]
参 数 描 述
FieldName1 W ITH eExpression1 [, FieldName2 W ITH eExpression2 ... ] 指 定 用 表 达 式 eExpression1 的 值 来 代 替 FieldName1 字 段 中 的 数 据 用 表 达式 eExpression2 的 值 来 代 替 字 段 FieldName2 中 的 数 据 依 此 类 推
当表达式的值比数值字段的宽度长时 REPLACE 采用以下方法来处理数据
-
首
先 REPLACE 截 短 表 达 式 的 小 数 位 然 后 圆 整 剩 余 部 分
-
如
果 此 时 字 段 仍 然 放 不 下 表 达 式 的 值 则 REPLACE 用 科 学 计 数 法 在 字段 中 保 存 表 达 式 的 值
-
如
果 还 不 行 REPLACE 则 用 星 号 代 替 字 段 内 容
ADDITIVE
把 对 备 注 字 段 的 替 代 内 容 追 加 到 备 注 字 段 的 后 面 A D D ITIVE 只 对 替 换 备 注字 段 有 用 如 果 省 略 ADDITIVE 则 用 表 达 式 的 值 改 写 备 注 字 段 原 有 内 容
Scope
指 定 要 替 换 内 容 的 记 录 范 围 只 替 换 指 定 范 围 内 记 录 字 段 的 内 容 Scope 子 句 有 ALL NEXT nRecords RECORD nRecordNumber 和 REST 有 关 scope 子 句 的 详 细 内 容 请 参 阅 帮 助 中 的 “ Scope Clauses ” 和 语 言 概 述
REPLACE 的默认范围是当前记录 ( NEXT 1 )
FOR lExpression1
只 有 当 指 定 记 录 使 表 达 式 lExpression1 求 值 结 果 为 真 (.T.) 时 它 的 字段 才 会 被 替 换 为 新 的 内 容 因 此 包 含 FOR 子 句 可 以 使 命 令 有 条 件 地 更 新记 录 而 将 那 些 不 需 要 更 新 的 记 录 筛 选 掉
当表达式 lExpression1 是可优化表达式时 Rushmore 将优化 REPLACE 命令 因此为使系统获得最佳性能 应在 FOR 表达式中使用可优化的表达式
详细内容 请参阅稍后的 SET OPTIMIZE 命令与 Microsoft Visual FoxPro 6.0 中文版程序员指南 第十五章 优化应用程序 中的 掌握 Rushmore 技术
W H ILE lExpression2
指 定 一 个 逻 辑 表 达 式 lExpression2 作 为 替 换 字 段 内 容 的 条 件 只 要 逻 辑 表 达式 lExpression2 计 算 为 真 (.T.) 就 替 换 记 录 中 的 数 据 直 至 遇 到 第 一 个计 算 结 果 为 假 (.F.) 的 表 达 式 为 止
IN n W orkArea
指 定 要 更 新 记 录 的 表 所 在 的 工 作 区
IN cTableAlias
指 定 要 更 新 记 录 的 表 的 别 名
如果同时省略 nWorkArea 和 cTableAlias 则更新当前选定工作区中表的记录
NOOPTIMIZE
关 闭 Rushmore 优 化
详细内容 请参阅稍后的 SET OPTIMIZE 命令与 Microsoft Visual FoxPro 6.0 中文版程序员指南 第十五章 优化应用程序 中的 掌握 Rushmore 技术
说 明
REPLACE 命令用表达式的值替换字段中的数据 在替换未选定工作区中的字段时字段前面必须加上表的别名
注 意 如 果 记 录 指 针 已 在 当 前 工 作 区 中 文 件 的 末 端 而 指 定 的 字 段 在 另 一 个
工 作 区 中 则 不 发 生 任 何 替 换
示 例
下面的示例包含 10 个记录的表 用 REPLACE 在字段中放置随机值 MIN( ) 和
MAX( ) 用来显示表中的最大值和最小值
CLOSE DATABASES
CREATE TABLE Random (cValue N(3))
FOR nItem = 1 TO 10 && 添加 10 条记录
APPEND BLANK
REPLACE cValue WITH 1 + 100 * RAND( ) && 插入任意值
ENDFOR
CLEAR
LIST && 显示这些值
gnMaximum = 1 && 初始化最小值
gnMinimum = 100 && 初始化最大值
SCAN
gnMinimum = MIN(gnMinimum, cValue) gnMaximum = MAX(gnMaximum, cValue)
ENDSCAN
? 'The minimum value is: ', gnMinimum && 显示最小值
? 'The maximum value is: ', gnMaximum && 显示最大值
请 参 阅
GATHER, INSERT-SQL, SCATTER