When working with LotusScript using Variants of type DateTime, time-only values get the "default" date component 1899.12.30 prefixed, while date-only values get the "default" time component 12:00:00 AM suffixed.
Function SetValidDateTime(varDateTime
As Variant, Byval fieldName As String, doc
As NotesDocument, dateTimeStyle as Integer)
As Integer
%REM
Parameters:
===========
varDateTime - variant of type (hopefully)
LS DateTime
fieldName - string value for name of field
that is to receive datetime value in varDateTime
doc - NotesDocument object to be updated
dateTimeStyle - integer value that controls how
varDateTime will be saved to document, specifically if
True = Date Only
False = Time Only
Any other integer = Date and Time
%END REM
Dim funcReturn As Integer
Dim whoCares As Variant
On Error Goto errHandle
fieldName = Trim$(fieldName)
If fieldName = "" Then
funcReturn = True 'generic error
Goto endFunc
End If
If doc Is Nothing Then
funcReturn = True 'generic error
Goto endFunc
End If
If Isdate(varDateTime) Then
Select Case dateTimeStyle
Case True 'Date component only
whoCares = Evaluate({FIELD } & fieldName
& { := } & fieldName &
{;@Setfield("} & fieldName
& {"; [} & Cstr
(Year(varDateTime)) &
{/} & Cstr(Month(varDateTime))
& {/} &
Cstr(Day(varDateTime)) & {])}, doc)
Case False 'Time component only
whoCares = Evaluate({FIELD } & fieldName & { := }
& fieldName & {;@Setfield("} & fieldName & {"; [} &
Cstr(Hour(varDateTime)) & {:} & Cstr(Minute
(varDateTime)) & {:} & Cstr(Second
(varDateTime)) & {])}, doc)
Case Else 'Both Date and Time components
doc.ReplaceItemValue fieldName, varDateTime
End Select
Else
doc.ReplaceItemValue fieldName, ""
'Or you could simply not do anything here...
End If
Goto endFunc
errHandle:
'Print "(SetValidDateTime) Error # " & Cstr(Err)
& " occured on line " & Cstr(Erl) & ": " & Error
funcReturn = Err
Resume endFunc
endFunc:
SetValidDateTime = funcReturn 'If False, no error
End Function
This was first published in May 2003