Hallo,
mal wieder ein Anliegen von mir.
Bei unserer Raumreservierung sollen nur noch Dokumente angezeigt werden, die nicht älter als 2 Tage sind und oder keine Wiederholungstermine sind.
Wir hatten uns zuerst entschieden, dass wir die Abfrage über die Ansichtsauswahl der Ansicht durchführen. Das führte dazu, dass vor Anzeige der Ansicht erst einmal 4 Sekunden eine Berechnung durchgeführt wurde.
Danach hatte wir uns umentschieden und wollen die Aussichtsauswahl über ein Feld im Dokument abgefragt werden. Hierzu hatten wir per Agent in jedes Dokument das Feld "Datum_Abgelaufen" mit dem Wert "Nein" eintragen lassen.
Jetzt haben wir einen Agenten erstellt, der nachts alle Dokuemte durchforsten soll, und nachschauen soll, ob ein Dokument älter als 2 Tage ist und kein Wiederholungstermin ist.
Wenn der Termin älter als 2 Tage ist, dann soll das Feld im Dokument mit "Ja" gefüllt werden. Leider funktioniert das nur nicht:
Hier ist der Code:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim nextdoc As Notesdocument
Dim tmpdt As New NotesDateTime("")
Dim purgedate As New NotesDateTime ("Heute")
Dim n As Integer
Dim StartDate As Variant
Dim EndDate As Variant
Dim OkToPurge As Integer
Dim item As NotesItem
Dim newItem As NotesItem
Set db=s.CurrentDatabase
Set dc=db.UnprocessedSearch("@Contains(Form;""Reservation"")", tmpdt,0)
Call purgedate.AdjustDay (-2)
Set doc=dc.GetFirstDocument
While Not (doc Is Nothing)
If doc.HasItem("$NoPurge") Then
StartDate=doc.GetitemValue("$NoPurge")
Else
StartDate=doc.GetitemValue("StartDateTime")
End If
Forall eachstartdate In StartDate
Dim tmpstartdate As New NotesDateTime(eachstartdate)
If purgedate.TimeDifference(tmpstartdate)>0 Then
OkToPurge=True
Else
OkToPurge=False
Goto DoNextDocument
End If
End Forall
If OkToPurge Then
Set nextdoc=dc.GetNextDocument (doc)
Zwischenwert2 = doc.GetitemValue("Form")
If Zwischenwert2(0) ="Reservation" Then
Set item = doc.ReplaceItemValue( "Datum_Abgelaufen", "Ja" )
Call doc.Save(True, False)
End If
Else
Call s.UpdateprocessedDoc(doc)
End If
DoNextDocument:
If doc Is Nothing Then
Set doc=nextdoc
Else
Set doc=dc.GetNextDocument (doc)
End If
Wend
End Sub
Wo liegt der Fehler. Vielen Dank vorab schon einmal für die Antworten.
Marshuhn