>>* control's valid
>>IF EMPTY( THIS.Value )
>> THIS.Value = .NULL.
>>ENDIF
>>
>>This works for character and memo datatypes but I can't get it to work for numerics. When I type in a 0 (zero) and tab out it becomes NULL.
>
>The problem is that 0 is the defined EMPTY() value for a numeric field, and in this case, EMPTY() and ISNULL() do not mean the same things. You'll have the same problem with logicals, where .F. is empty but not null, and with dates, where {} is empty but not null. You might try changing the first line of Jim's code fragment to:
>
>
IF VARTYPE(this.Value) = 'C' AND EMPTY(this.Value)>
>since both memo fields and strings will return "C"
OTOH, there's the IsBlank() function, which may be used to differ in some cases. Here's a quote from help:
"ISBLANK( ) differs from EMPTY( ) and ISNULL( ). For example, EMPTY( ) returns true (.T.) if a character expression contains any combination of null values, spaces, tabs, carriage returns, or line feeds; ISBLANK( ) returns true (.T.) if a character expression contains only the empty string or spaces."