Issue:  
With list of dates, need to get earliest or latest dates. 
 
Solutions: 
 
LotusScript Example of LATEST Date. 
 
%REM 
    Function GetLatestDate 
    Description: Checks list of dates to see which date is the latest using as string list of dates 
%END REM 
Function GetLatestDate(dateLst() As String) As String 
    Dim tmp1NDT As NotesDateTime        ' 1st comparison 
    Dim tmp2NDT As NotesDateTime        ' 2nd comparison 
    Dim counter As Long                    ' counter for dateLst 
    Dim tmp1date As String                ' temp string for tmp1NDT 
    Dim tmp2date As String                ' temp string for tmp1NDT 
    tmp1date = "" 
    tmp2date = "" 
    For counter = 0 To UBound(dateLst()) 
        tmp2date = dateLst(counter) 
        If Not (tmp2date="") Then 
            ' compare with first date 
            If (tmp1NDT Is Nothing) Then 
                ' no 1st date to compare, this date wins by default 
                tmp1date = tmp2date 
                Set tmp1NDT = New NotesDateTime(tmp1date) 
            Else 
                ' which date is earlier 
                Set tmp2NDT = New NotesDateTime(tmp2date) 
                If (tmp2NDT Is Nothing) Then 
                    ' skip testing new date, as passed date is invalid, current one if any wins 
                Else 
                    ' compare dates 
                    If (tmp2NDT.Timedifferencedouble(tmp1NDT) < 0) Then 
                        ' tmp2NDT is earlier, keep current date 
                    Else 
                        ' tmp2NDT is later, replace current testing date 
                        tmp1date = tmp2date 
                        Set tmp1NDT = New NotesDateTime(tmp2date) 
                    End If 
                End If 
            End If 
        End If 
    Next counter 
    ' return latest date 
    GetLatestDate = tmp1date 
End Function 
 
______________________________________________ 
 
@Formula for R6 or Later to Get Latest Date 
 
tmpAllDates:=@ToTime(@Trim( @Text(Fld1) : @Text(Fld2) : @Text(Fld3)  : @Text(Fld4) ); 
@For(n := 1; 
n <= @Elements(tmpAllDates); 
n := n + 1; 
tmpdate:=@If(tmpdate=""; tmpAllDates[n]; tmpdate< tmpAllDates[n]; tmpAllDates[n]; tmpdate) 
); 
@SetField("Frm_LastDateFld"; tmpdate); 
 
 
Pseudo @Formula Code for Pre-R6: 
 
Collect all dates into a list, use @date to get date portion and @trim to trim out empty elements 
AllDates:=(@TextToTime(@Trim( Date1: Date2: ....:Date9)) 
 
TotElements = @elements(AllDates); REM"How many do we have" 
 
IF TotElements = 0 EarliestDate = "" @return 
 
EarliestDate = Subset(AllDates;1)  
 
IF TotElements = 1 @return REM "well there is nothing more to check 
 
if EarliestDate < @subset(AllDates; 2) THEN EarliestDate= @subset(Alldates;2) 
if TotElements = 2 ;  @return("")  'Check Have we reached the max no. of valid entries 
 
if EarliestDate < @subset(AllDates; 3) THEN EarliestDate= @subset(Alldates; 3) 
if TotElements = 3 ; @return("") 'Check Have we reached the max no. of valid entries 
 
Go on with the 2 lines incrementing the numbers till you achieve your max permissible entries..
  
previous page
 
  |