Функция GETFLDSTATE()

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

Синтаксис:

GETFLDSTATE(cFieldName | nFieldNumber [, cTableAlias | nWorkArea])

Параметры:
cFieldName | nFieldNumber
Задает имя или номер поля, для которого будет возвращен статус редактирования. Номер поля nFieldNumber соответствует позиции поля в структуре таблицы или курсора. Для определения номера поля можно использовать команду DISPLAY STRUCTURE или функцию FIELD( ).
Можно задать -1 в качестве nFieldNumber, чтобы возвращалась символьная строка, состоящая из значений статуса удаления и редактирования для всех полей таблицы или курсора. Например, если в таблице пять полей и редактировалось только первое поле, функция GETFLDSTATE( ) возвратит следующее:

121111

Значение 1 в первой позиции указывает, что статус удаления не изменился.
Можно также задать 0 в качестве nFieldNumber, чтобы определить, изменился ли статус удаления для текущей записи с тех пор, как была открыта таблица или курсор.
Замечание. Функция GETFLDSTATE( ) позволяет определить только то, изменился ли статус удаления для текущей записи. Например, если пометить запись для удаления и затем отменить удаление, GETFLDSTATE( ) укажет, что статус удаления изменился, несмотря на то, что он в итоге вернулся в первоначальное состояние. Определить текущий статус удаления записи можно с помощью функции DELETED( ).
cTableAlias
Задает псевдоним таблицы или курсора, для которых будет возвращен статус редактирования поля или удаления записи.
nWorkArea
Задает рабочую область таблицы или курсора, для которых будет возвращен статус редактирования поля или удаления записи.
Если ни псевдоним, ни рабочая область не заданы, GETFLDSTATE( ) возвращает значение статуса для поля в выбранной таблице или курсоре.

Результат:
Числовой.

Комментарии:
В следующем списке перечислены возвращаемые значения и соответствующий статус редактирования или удаления:

Чтобы функция GETFLDSTATE( ) могла работать с локальными таблицами, предварительно нужно включить буферизацию строк или таблиц функцией CURSORSETPROP( ).
Если функция GETFLDSTATE( ) выдана без необязательных аргументов cTableAlias или nWorkArea, возвращается статус редактирования или удаления для таблицы или курсора, открытого в выбранной в данный момент рабочей области.

Пример:

* Следующий пример демонстрирует, как можно с помощью функции
* GETFLDSTATE( ) определить, было ли изменено содержимое поля.
* Значение MULTILOCKS устанавливается равным ON; это необходимо в
* случае буферизации таблицы. Открывается таблица customer в базе
* данных testdata, а затем с помощью функции CURSORSETPROP( )
* устанавливается мягкий режим буферизации таблицы (5).
* Перед изменением поля cust_id выдается функция GETFLDSTATE( ),
* которая отображает значение (1), соответствующее
* немодифицированному состоянию поля. Затем поле cust_id
* модифицируется по команде REPLACE и вновь выдается функция
* GETFLDSTATE( ), отображая значение (2), соответствующее
* модифицированному состоянию поля cust_id. Функция TABLEREVERT( )
* возвращает таблицу в исходное состояние, а затем опять выдается
* функция GETFLDSTATE( ), которая отображает значение (1),
* соответствующее первоначальному состоянию поля cust_id.

CLOSE DATABASES
SET MULTILOCKS ON	&& Must be on for table buffering
SET PATH TO (HOME( ) + 'samples\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
= TABLEREVERT(.T.)	&& Discard all table changes
? GETFLDSTATE('cust_id')	&& Displays 1, not modified

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 26.01.2003