Обновляет записи в таблице новыми значениями.

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

Параметры

FieldName1 WITH eExpression1[, FieldName2 WITH eExpression2... ]

Данные в поле FieldName1 будут заменены выражением eExpression1; Данные в поле FieldName2 будут заменены выражением eExpression2; и так далее.

Когда величина выражения больше, чем ширина числового поля REPLACE заполняет поле по следующим правилам:

  • Сначала, REPLACE исключает десятичные знаки и округляет остальную десятичную часть области.

  • Если величина все еще не умещается, REPLACE записывает выражение, используя научную нотацию.

  • Если величина все еще не умещается, REPLACE заменяет содержание поля звездочками.

ADDITIVE

Относится только к заменам в мемо полях. Если указанно ADDITIVE то происходит добавление в конец мемо поля. Если Вы опускаете ADDITIVE, мемо поле заменяется новым выражением.

Scope

Определяет диапазон записей, которые заменяются. По умолчанию REPLACE заменяет текущую запись.

Можно использовать следующие зарезервированные диапазоны:

ALL, NEXT nRecords, RECORD nRecordNumber, and REST. Более подробно про диапазоны записей, смотри Диапазоны Записей.

FOR lExpression1

Определяет, что определенные области заменяются только в тех записях, для которых lExpression1 оценивается в истину (.T.). Применение FOR дает возможность, заменять только те записи, которые соответствуют определенным условиям.

Оптимизация Запроса Rushmore оптимизирует REPLACE FOR если lExpression1 - оптимизируемое выражение. Для наилучшей работы, используйте оптимизируемое выражение в FOR условии.

Для дополнительной информации, смотрите SET OPTIMIZE Command и Оптимизация запроса с использованием Rushmore, для ускорения доступа к данным.

WHILE lExpression2

Определяет условие, при котором будет произведена замена пока логическое выражение lExpression2 оценивает в истину (.T).

IN nWorkArea

Определяет рабочую область в которой будут заменяться записи.

IN cTableAlias

Определяет псевдоним рабочей области в которой будут заменяться записи.

Если Вы опускаете nWorkArea и cTableAlias, записи будут записываться в той рабочей области которая выбранна к настоящему времени.

NOOPTIMIZE

Отключает использование оптимизации Rushmore.

Для дополнительной информации, смотрите SET OPTIMIZE Command и Оптимизация запроса с использованием Rushmore, для ускорения доступа к данным.

Expand imageЗамечание

REPLACE замещает данные в поле значением, приведенным в выражении. Записи из неактивной области должны быть указаны вместе с именем области.

NoteПримечание

Если опция IN отсутсвует в команде, замена не произойдет, если указатель записи стоит на конце файла в текущей рабочей области, а вы указали поле в другой рабочей области.

Expand imageПример

Следующий пример создает таблицу с 10 записями. REPLACE использован, чтобы заполнить таблицу случайными числами. MIN( ) И MAX( ), используется для выбора максимального и минимального значения в таблице .

  CopyCode imageКопировать пример
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
? 'Минимальное значение: ', gnMinimum  && Выводим на дисплей минимальное значение
? 'Максимальное значение: ', gnMaximum  && Выводим на дисплей максимальное значение

Expand imageСмотрите также