使用内存变量数组中的值更新字段内容。
语法
REPLACE FROM ARRAY ArrayName
[FIELDS FieldList]
[Scope]
[FOR lExpression1]
[WHILE lExpression2]
[NOOPTIMIZE]
参数
ArrayName
指定用来替换字段内容的数组名称。
FIELDS FieldList
指定只有 FieldList 中的字段才被数组中的内容替换。当替换非选定工作区的字段时,必须在字段前加上所在表的别名。
Scope
指定一个范围,规定要用数组中的内容替换其字段内容的记录。只有当记录在指定范围内时,才用数组内容替换它的字段值。替换一直进行到范围的末端或数组的末端。
范围子句有:ALL, NEXT nRecords, RECORD nRecordNumber 和 REST。有关范围子句的详细内容,请参阅 Scope
子句或语言概述。
REPLACE FROM ARRAY 的默认范围是当前记录 (NEXT 1)。
FOR lExpression1
指定只有记录使表达式 lExpression1 计算值为“真”(.T.)时,才替换记录中字段的内容。包含 FOR 子句是为了有条件地替换记录,筛选出不想替换的记录。对于每一个记录,只要它使表达式 lExpression1 的值计算为“真”(.T.),且数组中有元素,替换就要进行。
如果 lExpression1 是一个可优化表达式,Rushmore 将优化 replace from array 命令。为获得最佳运行性能,应在 FOR 表达式中使用可优化表达式。有关详细内容,请参阅
SET OPTIMIZE,或《开发指南》第十五章“优化应用程序”。
WHILE lExpression2
指定一个逻辑表达式 lExpression2 作为替换字段内容的条件。只要 lExpression2 计算为“真”,就替换记录中字段的数据,直至遇到使表达式不为“真”(.T.) 的记录为止。
NOOPTIMIZE
关闭 Rushmore 优化。有关详细内容,请参阅的 SET OPTIMIZE,或者《开发指南》第十五章“优化应用程序”。
说明
replace from array 命令不处理备注和通用字段。若要往这些字段中加入数据,应使用 GATHER 和 APPEND GENERAL 命令。
替换从数组中的第一个元素开始,用数组中的元素替换记录中相应字段的内容。数组的第一个元素替换记录的第一个字段,第二个元素替换记录的第二个字段,依此类推。
如果数组的元素比表的字段少,则不替换多余的字段。如果数组的元素比表的字段多,则忽略数组中多余的元素。
附注
如果记录指针在当前工作区中文件的末端,而指定的字段在另一个工作区,则不发生任何替换。