Отменяет Изменения, сделанные в буферизированной строке или буферизированной таблице или курсоре и восстановливает данные OLDVAL( ) для отдаленных курсоров и текущие значения диска для локальных таблиц и курсоров.

Обратите внимание:
В сети, текущие данные диска могут отличаться от данных самого диска на то время, когда таблица была открыта или курсор был создан. Другие пользователи в сети могли изменить данные после того, как таблица была открыта, или курсор был создан.

TABLEREVERT( [lAllRows [, cTableAlias | nWorkArea] ] )

Параметры

lAllRows

Определяет, отменить ли все изменения, сделанные в таблице или курсоре. Следующая таблица описывает значения для lAllRows .

lAllRows Описание

Ложь (.F).

Если буферизация таблицы допускается, то отменяются изменения, сделанный в текущей записи таблицы или курсора. (Значение по умолчанию)

Истина (.T).

Если буферизация таблицы допускается, то отменяются изменения, сделанные во всех записях таблицы или курсора.

Если допускается буферизация строки, Visual FoxPro игнорирует значение lAllRows , и изменения, сделанные в текущей записи таблицы или курсора отменяются.
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

См. Также