Возвращает значение поля непосредственно с диска или из удаленного источника.
CURVAL(cExpression [, cTableAlias | nWorkArea]) |
Параметры
- cExpression
-
Задает выражение, значение которого функция CURVAL( ) возвращает с диска или из удаленного источника. cExpression обычно является полем или списком полей таблицы или удаленного источника.
- cTableAlias
-
Задает псевдоним таблицы, для которой с диска или из удаленного источника возвращается значение поля.
- nWorkArea
-
Задает рабочую область таблицы, для которой с диска или из удаленного источника возвращается значение поля.
Возвращаемое значение
Character, Currency, Date, DateTime, Double, Float, Logical, Numeric, или Memo
Примечания
Сравнивая значения, возвращаемые функциями CURVAL( ) и OLDVAL( ), можно определить, не изменил ли какой-нибудь другой пользователь сети значение поля, когда оно редактировалось. Функции CURVAL( ) и OLDVAL( ) могут возвратить разные значения только в том случае, если включена оптимистическая буферизация строк или таблиц. Для включения оптимистической буферизации строк или таблиц следует использовать функцию CURSORSETPROP( ).
![]() |
---|
Если вы работаета с представлением в многопользовательской среде, значения, возвращенные CURVAL() немогут быть актуальными, пока вы невызовите функцию REFRESH(). Данные, возвращенные представлением буферизированы, и функция CURVAL() читает значения из буфера. Однако, если другие пользователи изменили данные в основных таблицах для представления, буферизированные данные не обновляются пока не будет вызвана функция REFRESH(). |
Функция CURVAL( ) возвращает значение поля для текущей записи, а тип данных возвращаемого значения определяется выражением, заданным с помощью cExpression.
Если функция CURVAL( ) выдается без необязательных аргументов cTableAlias или nWorkArea, возвращается значение поля для таблицы или курсора, открытых в выбранной в данный момент рабочей области.
Пример
В данном примере создается свободная таблица mytable
, и значение "One" помещается в поле cDigit
. Оптимистическая буферизация становится возможной после команды SET MULTILOCKS ON и вызова функции CURSORSETPROP( ).
Затем значение "Two" помещается в поле cDigit
, , функции CURVAL( ) и OLDVAL( ) используются для показа первоначальных значений поля cDigit
. Функция TABLEUPDATE( ) используется для внесения изменений в таблицу, CURVAL( ) и OLDVAL( ) вызываются для показа новых значений поля cDigit
. Поскольку данный пример рассчитан на одного пользователя, функции CURVAL( ) и OLDVAL( ) возвращают одинаковые значения.
![]() | |
---|---|
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") |