Возвращает значение поля непосредственно с диска или из удаленного источника.

CURVAL(cExpression [, cTableAlias | nWorkArea])

Параметры

cExpression

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

cTableAlias

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

nWorkArea

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

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

Character, Currency, Date, DateTime, Double, Float, Logical, Numeric, или Memo

Expand imageПримечания

Сравнивая значения, возвращаемые функциями CURVAL( ) и OLDVAL( ), можно определить, не изменил ли какой-нибудь другой пользователь сети значение поля, когда оно редактировалось. Функции CURVAL( ) и OLDVAL( ) могут возвратить разные значения только в том случае, если включена оптимистическая буферизация строк или таблиц. Для включения оптимистической буферизации строк или таблиц следует использовать функцию CURSORSETPROP( ).

NoteNote

Если вы работаета с представлением в многопользовательской среде, значения, возвращенные CURVAL() немогут быть актуальными, пока вы невызовите функцию REFRESH(). Данные, возвращенные представлением буферизированы, и функция CURVAL() читает значения из буфера. Однако, если другие пользователи изменили данные в основных таблицах для представления, буферизированные данные не обновляются пока не будет вызвана функция REFRESH().

Функция CURVAL( ) возвращает значение поля для текущей записи, а тип данных возвращаемого значения определяется выражением, заданным с помощью cExpression.

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

Expand imageПример

В данном примере создается свободная таблица mytable, и значение "One" помещается в поле cDigit. Оптимистическая буферизация становится возможной после команды SET MULTILOCKS ON и вызова функции CURSORSETPROP( ).

Затем значение "Two" помещается в поле cDigit, , функции CURVAL( ) и OLDVAL( ) используются для показа первоначальных значений поля cDigit. Функция TABLEUPDATE( ) используется для внесения изменений в таблицу, CURVAL( ) и OLDVAL( ) вызываются для показа новых значений поля cDigit. Поскольку данный пример рассчитан на одного пользователя, функции CURVAL( ) и OLDVAL( ) возвращают одинаковые значения.

  CopyCode imageCopy Code
CLOSE DATABASES
CLEAR

CREATE TABLE mytable FREE (cDigit C(10)) 
* Store original value
INSERT INTO mytable (cDigit) VALUES ("One")
SET MULTILOCKS ON        && Allow optimistic table buffering
= CURSORSETPROP("Buffering",5)   && Optimistic table buffering on
REPLACE cDigit WITH "Two"    && New value

? "Current value: " + CURVAL("cDigit", "mytable")
? "Old value: " + OLDVAL("cDigit", "mytable")
= TABLEUPDATE(.T.)       && Commit changes made to table
? "Table changes committed"
? "New current value: " + CURVAL("cDigit", "mytable")
? "New old value: " + OLDVAL("cDigit", "mytable")

Expand imageСмотри также