Domino 9 und frühere Versionen > ND8: Entwicklung

Wiedervorlage per Agent

<< < (2/3) > >>

manboo8000:

--- Zitat von: koehlerbv am 27.10.15 - 16:52:02 ---1 (a): Zu Beginn des Agents fragst Du als erstes das aktuelle Datum ab und beendest den Agent, wenn das nicht der 1. des Monats ist
   (b): Du stellst sicher, dass der Agent auch an einem späteren Tag läuft, wenn der Agent am 1. des Monats "verhindert" war
         (Speicherung des letzten erfolgreichen Agentlaufs)
    (c) Du stellst sicher, dass der Agent nicht "aus Versehen" am 1. ein zweites Mal laufen kann (siehe 1 (b))

2: Beispielsweise mit einem NotesDatabase.Search (Formelvergleich von Monat und Jahr des Werts des Wiedervorlage-Items).

HTH,
Bernhard

--- Ende Zitat ---

also das unter 1 jetzt mal außen vor gelassen. Da ich leider noch nie ein Lotus-Script-Seminar hatte, stehe ich da leider etwas auf dem Schlauch. Vielleicht könnt ihr mir dabei helfen. Mein Code (fehlerhaft) sieht jetzt so aus:

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim newsletter As NotesNewsLetter
   Dim doc As NotesDocument
   Dim Wiedervorlage As NotesDateTime
   Set MonthWV = Month(Wiedervorlage)
   Set YearWV = Year (Wiedervorlage)
   Dim profiledoc As NotesDocument
   Set profiledoc = db.GetProfileDocument("Konfiguration")
   Set db = session.CurrentDatabase
   Set collection = db.Search (MonthWV=Month(Today) & YearWV=Year(@Today))
   If ( collection.Count > 0 ) Then
      Set newsletter = New NotesNewsLetter( collection )
      Set doc = newsletter.FormatMsgWithDoclinks( db )
      doc.Form = "Memo"
      doc.Subject = "Wiedervorlage Fortbildung(en)"
      Call doc.Send( False, profiledoc )
   End If
End Sub

WildVirus:
Hallo,

die Variable Wiedervorlage ist bei Dir leer.

Bau Dir eine Fehlerroutine ein (Beispiele gibt es hier im Forum, such mal nach "on Error").

Dann benötigt Du eine vernünftige Reihenfolge. Erst DB zuweisen, dann ein Profildocument.

Eine Mail sollte auch einen Absender haben (Feld From). Noch wichtiger ist aber der Empfänger im SendTo-Feld....

Bei kurzem Blick aufgefallen, für mehr reicht die Zeit gerade nicht.

CU,
Axel

Andrew Harder:
Ich habe mal alles zusammengestrichen, was in der aktuellen Version benutzt wird und nicht funktioniert, oder noch gar nicht genutzt wird.
Dann solltest du schon mal eine erste Testversion haben, fehlt natürlich noch einiges u. a. die Fehlerbehandlung.
Es geht hier nur mal darum, das Du  einen speicherbaren und testbaren Code hast, dann bekommst Du schneller ein Gefühl dafür.


--- Code: --- Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim newsletter As NotesNewsLetter
Dim doc As NotesDocument
Dim Wiedervorlage As NotesDateTime
Dim search As String

Set session = New NotesSession
Set db = session.CurrentDatabase

Set Wiedervorlage = New NotesDateTime(Now)
Call Wiedervorlage.Adjustmonth(-1)

search = {Form = "NameDerForm" & REMINDED != "1"} ' Name der Form hier setzen!
Set dc = db.Search(search, Wiedervorlage, 0)

If (dc.Count > 0) Then
Set newsletter = New NotesNewsLetter(dc)
Set doc = newsletter.FormatMsgWithDoclinks(db)
Call doc.Replaceitemvalue("Form", "Memo")
Call doc.Replaceitemvalue("From", session.Username ) ' test only
Call doc.Replaceitemvalue("SendTo", session.Username ) ' test only
Call doc.Replaceitemvalue("Subject", "Wiedervorlage Fortbildung(en)")
Call doc.Send(False)
Call dc.Stampall("REMINDED", "1")
End If
--- Ende Code ---

Testcode ohne Gewähr.

manboo8000:
also das Feld Wiedervorlage soll nicht neu befüllt werden, falls das so rübergekommen ist.

Es gibt in der Datenbank mehrere Dokumente, bei denen das Feld Wiedervorlage bereits gefüllt ist.

Bspw.

Dokument A: 08.11.2015
Dokument B: 30.11.2015
Dokument C: 06.12.2015
usw.

Der Agent soll jetzt am Monatsersten laufen und dann die Dokumente in einer E-Mail an die Adresse aus dem Konfigurationsdokument anlisten, die in diesem Monat zur Wiedervorlage anstehen.

Also sollte er am 01.11.2015 eine Mail erzeugen, in der Links zu den Dokumenten A + B enthalten sind bspw.

WildVirus:
dann pass die Suche entsprechend an


--- Zitat von: Andrew Harder am 29.10.15 - 15:09:22 ---

--- Code: --- ..
entfällt: Set Wiedervorlage = New NotesDateTime(Now)
entfällt: Call Wiedervorlage.Adjustmonth(-1)

search = {Form = "NameDerForm" & REMINDED != "1"} 'Hier musst Du anpassen
...

--- Ende Code ---

--- Ende Zitat ---

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln