REPLACE (Comando)

Actualiza los registros de una tabla.

REPLACE FieldName1 WITH eExpression1 [ADDITIVE]
   [, FieldName2 WITH eExpression2 [ADDITIVE]] ... [Scope]
   [FOR lExpression1] [WHILE lExpression2] [IN nWorkArea | cTableAlias]
   [NOOPTIMIZE]

Parámetros

  • FieldName1 WITH eExpression1 [, FieldName2 WITH eExpression2 ... ]
    Especifica que los datos de FieldName1 se sustituyan por el valor de la expresión eExpression1; que los datos de FieldName2 se sustituyan por el valor de la expresión eExpression2; y así sucesivamente.

    Cuando el valor de la expresión sea más largo que el ancho de un campo numérico, REPLACE hará que quepa el valor, mediante la ejecución de los pasos siguientes:

    • Primero, REPLACE truncará los decimales y redondeará la parte decimal restante del campo.
    • Si el valor aún no cabe, REPLACE almacenará el contenido del campo en notación científica.
    • Si el valor sigue sin caber, REPLACE sustituirá el contenido del campo por asteriscos.
  • ADDITIVE
    Anexa al final de los campos memo los reemplazos de los campos memo. ADDITIVE sólo se aplica a los reemplazos de los campos memo. Si no se incluye ADDITIVE, el campo memo se sobrescribirá con el valor de la expresión.

  • Scope
    Especifica un rango de registros que se va a sustituir. Solamente se sustituyen los registros incluidos dentro del rango. Las cláusulas de alcance son: ALL, NEXT nRecords, RECORD nRecordNumber y REST. Para obtener más información acerca de las cláusulas de alcance, vea Cláusulas de alcance o Introducción al lenguaje. El alcance predeterminado de REPLACE es el registro actual (NEXT 1).

  • FOR lExpression1
    Especifica que los campos designados se sustituyan únicamente en los registros para los que lExpression1 se evalúe como verdadero (.T.). La inclusión de FOR le permite sustituir registros de forma condicional, descartando los registros no deseados.

    Si lExpression1 es una expresión optimizable, Rushmore optimizará REPLACE FOR. Para obtener el máximo rendimiento, utilice una expresión optimizable en la cláusula FOR.

    Si desea obtener más información, vea SET OPTIMIZE y Utilizar Rushmore para agilizar el acceso a los datos.

  • WHILE lExpression2
    Especifica una condición según la cual se sustituyen los campos mientras la expresión lógica lExpression2 se evalúe como verdadero (.T.).

  • IN nWorkArea
    Especifica el área de trabajo de la tabla en la que se actualizan los registros.

  • IN cTableAlias
    Especifica el alias de la tabla en la que se actualizan los registros.

    Si omite nWorkArea y cTableAlias, los registros se actualizarán en la tabla del área de trabajo seleccionada actualmente.

  • NOOPTIMIZE
    Impide la optimización Rushmore.

    Si desea obtener más información, vea SET OPTIMIZE y Utilizar Rushmore para agilizar el acceso a los datos.

Observaciones

REPLACE sustituye los datos de un campo con el valor de una expresión. Los campos de las áreas de trabajo no seleccionadas deben ir precedidos de su alias.

Nota   Si se omite la cláusula IN, no se producirá ninguna sustitución si el puntero de registro está al final del archivo del área de trabajo actual y especifica un campo de otra área de trabajo.

Ejemplo

El ejemplo siguiente crea una tabla con 10 registros. Se usa REPLACE para colocar valores aleatorios en un campo. MIN( ) y MAX( ) muestran los valores máximo y mínimo de la tabla.

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

Vea también

GATHER | INSERT - SQL | SCATTER