This tip was submitted to the SearchDomino.com tip library by member Stale Dybsjord . Please let others know how useful it is via the rating scale at the end of the tip. Do you have a useful Lotus Notes, Domino, Workplace or WebSphere tip or code snippet to share? Submit it to our monthly tip contest and you could win a prize.
This function is great for checking all kinds of datefields in a Lotus Notes document. Some of the things you'll be able to check are:
- How a field's date is compared to another
- If one datefield is larger than another
- How it is smaller than today
- How it is different from today, or in 20 days, etc.
It's easy adding other checks to it as well. This function can examine all different date checks that exist.
Function InfoLineCompareDate
(doc As NotesDocument, dateField1 As String,
dateField2 As String, dateCheck As String,
adjustCheck As String, adjustValue As String) As Integer
'
' Input:
' doc: document where field is
' dateField1: Name of first datefield
' dateField2: Name of seconf datefield.
(This can also be set to TodayDateValue then we compare to todays date)
' dateCheck: what comparision should be done.
' adjustCheck: should we adjust somehing first
' adjustValue: how should we adjust it.
'
' Output: true or false
' Change Control:
'
' Use this to get the documents dateItems
Dim item1 As NotesItem
Dim item2 As notesitem
Dim flag As Integer
Dim returnValue As Integer
Dim tmpString As String
' Get values from document
' t1 and t2 will hold the datetime values
Set item1 = doc.getFirstItem(dateField1)
Set t1 = item1.DateTimeValue
' check if this is a field or we should use todays date
If dateField2 = "TodayDateValue" Then
Set t2 = New NotesDateTime( "Today" )
Else
Set item2 = doc.getFirstItem(dateField2)
Set t2 = item2.DateTimeValue
End If
returnValue = 0
' In this check also for check if a date is
10 days in the future from the other date or similar.
If adjustvalue <> "" Then
Select Case adjustCheck
Case "day"
Call t2.AdjustDay(adjustValue)
Case "month"
Call t2.AdjustMonth(adjustValue)
Case "year"
Call t2.AdjustYear(adjustValue)
End Select
End If
' What check should we perform
Select Case dateCheck
Case "<"
If Cdat(t1.dateOnly) < Cdat(t2.dateOnly) Then
returnValue = 1
End If
Case ">"
If Cdat(t1.dateOnly) > Cdat(t2.dateOnly) Then
returnValue = 1
End If
Case "="
If Cdat(t1.dateOnly) = Cdat(t2.dateOnly) Then
returnValue = 1
End If
Case "<>"
If Cdat(t1.dateOnly) <> Cdat(t2.dateOnly) Then
returnValue = 1
End If
End Select
'return the value depending on above results
If returnValue = 1 Then
InfoLineCompareDate = True
Else
InfoLineCompareDate = False
End If
End Function
And I call this function like this:
If InfoLineCompareDate
(doc, "ENDDATE2", "LATE_REDELIVERY_DATE", ">", "day", "+10")
= False Then
For this action I want to see if enddate2 + 10 days is greater than late_redelivery_date.
Do you have comments on this tip? Let us know.