Отменяет Изменения, сделанные в буферизированной строке или буферизированной таблице или курсоре и восстановливает данные OLDVAL( ) для отдаленных курсоров и текущие значения диска для локальных таблиц и курсоров.
![]() |
---|
В сети, текущие данные диска могут отличаться от данных самого диска на то время, когда таблица была открыта или курсор был создан. Другие пользователи в сети могли изменить данные после того, как таблица была открыта, или курсор был создан. |
TABLEREVERT( [lAllRows [, cTableAlias | nWorkArea] ] ) |
Параметры
- lAllRows
- Определяет, отменить ли все изменения, сделанные в таблице или курсоре. Следующая таблица описывает значения для lAllRows .
lAllRows Описание Ложь (.F).
Если буферизация таблицы допускается, то отменяются изменения, сделанный в текущей записи таблицы или курсора. (Значение по умолчанию)
Истина (.T).
Если буферизация таблицы допускается, то отменяются изменения, сделанные во всех записях таблицы или курсора.
- cTableAlias
- Определяет псевдоним таблицы или курсора, в котором отменяются изменения.
- nWorkArea
- Определяет рабочую область таблицы или курсора, в которой отменяются изменения.
Возвращаемое значение
Числовой тип данных. TABLEREVERT( ) возвращает количество записей, для которых изменения были отвергнуты.
Замечания
TABLEREVERT( ) не может отменить изменения, сделанные в таблице или курсоре, которые не имеют разрешения построчной или табличной буферизации. Если Вы используете TABLEREVERT( ) и построчная или табличная буферизация не разрешена, Visual FoxPro генерирует сообщение об ошибке. Используйте CURSORSETPROP( ), чтобы разрешить или запретить построчную или табличную буферизацию.
Изменения отменяются для таблицы или курсора, открытых в текущей рабочей области, если команда TABLEREVERT( ) выполняется без дополнительных параметров cTableAlias или nWorkArea .
TABLEREVERT( ) не возвращает указатель записи на его первоначальную позицию.
TABLEREVERT () оперирует с объектами CursorAdapter тем же самым способом, как с другими буферизированными курсорами.
В Visual FoxPro 9.0, Вы не можете запустить функцию TABLEREVERT( ), когда TABLEUPDATE( ) находится в состоянии выполнения.
Пример
Следующий пример демонстрирует, как Вы можете использовать TABLEREVERT( ), чтобы отказаться от изменений, сделанных в буферизированной таблице. MULTILOCKS установлен в ON, как требование для буферизации таблицы. Открывается таблица customer
базы данных testdata
, и затем выполняется CURSORSETPROP( ), чтобы установить режим буферизации в режим оптимистической буферизации таблицы (5).
Отображается значение поля cust_id
и затем поле cust_id
изменяется командой REPLACE. Отображается новое значение поля cust_id
. Затем испльзуется TABLEREVERT( ), чтобы вернуть таблицу в ее первоначальное состояние (вместо этого могла быть использована TABLEUPDATE( ), чтобы подтвердить изменения). Затем отображается прежнее значение поля cust_id
.
![]() | |
---|---|
CLOSE DATABASES SET MULTILOCKS ON && Must be on for table buffering SET PATH TO (HOME(2) + 'data\') && Sets path to database OPEN DATABASE testdata && Open testdata database USE Customer && Open customer table = CURSORSETPROP('Buffering', 5, 'customer') && Enable table buffering CLEAR ? 'Original cust_id value: ' ?? cust_id && Displays current cust_id value REPLACE cust_id WITH '***' && Changes field contents ? 'New cust_id value: ' ?? cust_id && Displays new cust_id value = TABLEREVERT(.T.) && Discard all table changes ? 'Reverted cust_id value: ' ?? cust_id && Displays reverted cust_id value |
См. Также
Другие Ресурсы
CURSORSETPROP( ) ФункцияCURVAL( ) Функция
OLDVAL( ) Функция
TABLEUPDATE( ) Функция
Функции
Справочник Языка