Checking for null date
Ruslan Zasukhin
sunshine at public.kherson.ua
Sun Mar 29 14:01:46 CDT 2009
On 3/29/09 9:58 PM, "Steve Albin" <steve at steve-albin.com> wrote:
>>> I'm using V4RB 4 and I need to know how to tell if a date field in a cursor
>>> is
>>> null.
>>>
>>> I tried this:
>>>
>>> if VDateTime(cursor.Field(27)).Value <> nil then
>>> Return VDateTime(cursor.Field(27)).Value
>>> else
>>> Return nil
>>> end
>>>
>>> This returns a date field, but an invalid date which I would expect since I
>>> know the field is <NULL>.
>>>
>>> I tried this:
>>>
>>> if self.cursor.Field(27).GetString <> "" then
>>> Return VDateTime(cursor.Field(27)).Value
>>> else
>>> Return nil
>>> end
>>>
>>> This returns nil as expected.
>>>
>>> I can easily change my code to check the string value, but it seems that the
>>> first way should work. What am I doing wrong?
>>
>> Much more easy
>>
>> if curs.Field(27).IsNull
>
> That is easier. Thanks!
>
> But, the question was why doesn't VDateTime(cursor.Field(27)).Value return
> nil. Is is becasue casting the date causes a date field to be created with
> unpredictable results? This is probably an RB question more than a Valentina
> question...
No,
This is because WE did not promise you this !! :-)
Valentina PATTERN of work with NULL and value is:
IF you know that you have NULLABLE field THEN
* you MUST at first check
fld.IsNull() <<< this read ONE BIT from bitset file
* then only if not NULL, you can touch
fld.Value <<<< reads from VALUE file,
this can be many bytes ...
--
Best regards,
Ruslan Zasukhin
VP Engineering and New Technology
Paradigma Software, Inc
Valentina - Joining Worlds of Information
http://www.paradigmasoft.com
[I feel the need: the need for speed]
More information about the Valentina
mailing list