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