Обновляет записи в таблице новыми значениями.
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, для ускорения доступа к данным.
Замечание
REPLACE замещает данные в поле значением, приведенным в выражении. Записи из неактивной области должны быть указаны вместе с именем области.
![]() |
---|
Если опция IN отсутсвует в команде, замена не произойдет, если указатель записи стоит на конце файла в текущей рабочей области, а вы указали поле в другой рабочей области. |
Пример
Следующий пример создает таблицу с 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 ? 'Минимальное значение: ', gnMinimum && Выводим на дисплей минимальное значение ? 'Максимальное значение: ', gnMaximum && Выводим на дисплей максимальное значение |