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

SETFLDSTATE(cFieldName | nFieldNumber, nFieldState [, cTableAlias
   | nWorkArea])

Параметры

cFieldName | nFieldNumber

Определяет имя или номер поля, для которого присвоен статус модификация или удаления. Номер поля nFieldNumber соответствует номеру поля в структуре курсора или таблицы. DISPLAY STRUCTURE или FIELD( ) может использоваться, чтобы определить номер поля. Чтобы установить статус удаления для записи, включите 0 как номер поля.
nFieldState

Определяет значение статуса модификации или удаления для поля. Следующая таблица перечисляет значения статуса модификации или удаления для поля и соответствующий статус модификацию или удаления:

nFieldState Статус модификации или удаления

1

Поле не модифицировалось, или состояние удаления не изменялось.

2

Поле модифицировалось, или состояние удаления изменялось.

3

Поле в добавленной записи не модифицировалось, или состояние удаления не изменялось для добавленной записи.

4

Поле в добавленной записи модифицировалось, или состояние удаления изменялось для добавленной записи.

cTableAlias

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

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

Возвращаемое значение

Логическое

Замечания

Visual FoxPro использует значения состояния поля, чтобы определить, какие поля в таблицах или курсорах модифицированы. SETFLDSTATE( ) позволяет Вам контролировать, какие поля Visual FoxPro пытается обновить, независимо от того какие поля уже модифицированы в таблице или курсоре.

Пример

Следующий пример демонстрирует, как Вы можете использовать SETFLDSTATE( ), чтобы изменить статус поля. MULTILOCKS установлен в ON, требование для буферизации таблицы. Открыта таблица customer в базе данных testdata , затем используется CURSORSETPROP( ), чтобы установить режим буферизации в значение оптимистической буферизации таблицы (5).

Выполняется GETFLDSTATE( ), чтобы отобразить значение (1) соответствующее немодифицированному состоянию поля cust_id прежде, чем оно модифицировано. Поле cust_id изменяется командой REPLACE, и GETFLDSTATE( ) выполняется снова, чтобы отобразить значение (2) соответствтующее модифицированному состоянию поля cust_id .

SETFLDSTATE( ) используется, чтобы изменить состояние поля cust_id обратно в 1 (немодифицированный). GETFLDSTATE( ) выполняется снова и отображается 1, соответствуя состоянию поля cust_id , заданному функцией SETFLDSTATE( ). TABLEREVERT( ) используется, чтобы вернуть таблицу к ее первоначальному состоянию.

Скопировать код
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
? GETFLDSTATE('cust_id') && Displays 1, not modified
REPLACE cust_id WITH '***' && Changes field contents
? GETFLDSTATE('cust_id') && Returns 2, field modified
= SETFLDSTATE('cust_id', 1) && Change the field status
? GETFLDSTATE('cust_id') && Displays 1, not modified
= TABLEREVERT(.T.) && Discard all table changes

См. Также