Updates table records.
REPLACE FieldName1 WITH eExpression1 [ADDITIVE] [, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope] [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias] [NOOPTIMIZE]
- FieldName1 WITH eExpression1 [, FieldName2 WITH eExpression2 ... ]
- Specifies that the data in FieldName1 be replaced with the value of the expression eExpression1; that the data in FieldName2 be replaced with the value of the expression eExpression2; and so on.
When the expression value is longer than the width of a numeric field, REPLACE forces the value to fit by carrying out the following steps:
- First, REPLACE truncates decimal places and rounds the remaining decimal portion of the field.
- If the value still doesn't fit, REPLACE stores the field contents using scientific notation.
- If the value still doesn't fit, REPLACE replaces the field contents with asterisks.
- Appends to the end of the memo fields replacements to memo fields. ADDITIVE applies to replacements in memo fields only. If you omit ADDITIVE, the memo field is overwritten with the value of the expression.
- Specifies a range of records to replace. Only the records that fall within the range are replaced. The scope clauses are: ALL, NEXT nRecords, RECORD nRecordNumber, and REST. For more information on scope clauses, see Scope Clauses or Overview of the Language. The default scope for REPLACE is the current record (NEXT 1).
- FOR lExpression1
- Specifies that the designated fields be replaced only in records for which lExpression1 evaluates to true (.T.). Including FOR makes it possible for you to conditionally replace records, filtering out those you don't want replaced.
Rushmore optimizes REPLACE FOR if lExpression1 is an optimizable expression. For best performance, use an optimizable expression in the FOR clause.
- WHILE lExpression2
- Specifies a condition whereby fields are replaced for as long as the logical expression lExpression2 evaluates to true (.T.).
- IN nWorkArea
- Specifies the work area of the table in which records are updated.
- IN cTableAlias
- Specifies the alias of the table in which records are updated.
If you omit nWorkArea and cTableAlias, records are updated in the table in the currently selected work area.
- Prevents Rushmore optimization.
REPLACE replaces data in a field with the value in an expression. Fields in unselected work areas must be prefaced with their alias.
Note If the IN clause is omitted, no replacement occurs if the record pointer is at the end of the file in the current work area and you specify a field in another work area.
The following example creates a table with 10 records. REPLACE is used to place random values into a field. MIN( ) and MAX( ) displays the maximum and minimum values in the table.
CLOSE DATABASES CREATE TABLE Random (cValue N(3)) FOR nItem = 1 TO 10 && Append 10 records, APPEND BLANK REPLACE cValue WITH 1 + 100 * RAND( ) && Insert random values ENDFOR CLEAR LIST && Display the values gnMaximum = 1 && Initialize minimum value gnMinimum = 100 && Initialize maximum value SCAN gnMinimum = MIN(gnMinimum, cValue) gnMaximum = MAX(gnMaximum, cValue) ENDSCAN ? 'The minimum value is: ', gnMinimum && Display minimum value ? 'The maximum value is: ', gnMaximum && Display maximum value