Возвращает значение поля непосредственно с диска или из удаленного источника.
Синтаксис:
CURVAL(cExpression [, cTableAlias | nWorkArea])
Параметры:
cExpression
Задает выражение, значение которого функция CURVAL( ) возвращает с диска или из удаленного источника. cExpression обычно является полем или списком полей таблицы или удаленного источника.
cTableAlias
Задает псевдоним таблицы, для которой с диска или из удаленного источника возвращается значение поля.
nWorkArea
Задает рабочую область таблицы, для которой с диска или из удаленного источника возвращается значение поля.
Результат:
Типа Character, Currency, Date, DateTime, Double, Float, Logical, Numeric или Memo.
Комментарии:
Сравнивая значения, возвращаемые функциями CURVAL( ) и OLDVAL( ), можно определить, не изменил ли какой-нибудь другой пользователь сети значение поля, когда оно редактировалось. Функции CURVAL( ) и OLDVAL( ) могут возвратить разные значения только в том случае, если включена мягкая буферизация строк или таблиц. Для включения мягкой буферизации строк или таблиц следует использовать функцию CURSORSETPROP( ).
Функция CURVAL( ) возвращает значение поля для текущей записи, а тип данных возвращаемого значения определяется выражением, заданным с помощью cExpression.
Если функция CURVAL( ) выдается без необязательных аргументов cTableAlias или nWorkArea, возвращается значение поля для таблицы или курсора, открытых в выбранной в данный момент рабочей области.
Пример:
* В данном примере создается свободная таблица mytable и значение * "One" помещается в поле cDigit. Мягкая буферизация становится * возможной после команды SET MULTILOCKS ON и вызова функции * CURSORSETPROP( ). * Затем значение "Two" помещается в поле cDigit, функции CURVAL( ) и * OLDVAL( ) используются для показа первоначальных значений поля cDigit. * Затем с помощью функции TABLEUPDATE( ) изменения вносятся в * таблицу; CURVAL( ) и OLDVAL( ) вызываются для показа новых значений * поля cDigit. Поскольку данный пример рассчитан на одного пользователя, * функции CURVAL( ) и OLDVAL( ) возвращают одинаковые значения. CREATE TABLE mytable FREE (cDigit C(10)) INSERT INTO mytable (cDigit) VALUES ("One") && Original value SET MULTILOCKS ON && Must be on for optimistic table buffering = CURSORSETPROP('Buffering',5) && Optimistic table buttering on REPLACE cDigit WITH "Two" && New value CLEAR ? 'Current value: ' + CURVAL('cDigit', 'mytable') ? 'Old value: ' + OLDVAL('cDigit', 'mytable') = TABLEUPDATE(.T.) && Commits all changes made to table ? 'Table changes committed' ? 'New current value: ' + CURVAL('cDigit', 'mytable') ? 'New old value: ' + OLDVAL('cDigit', 'mytable')