Domino 9 und frühere Versionen > ND6: Entwicklung

Agent funktioniert nicht

(1/3) > >>

DannyCrown:
Hallo Leute,
habe schon viel gesucht und auch viel gelesen aber irgendwie nicht das richtige gefunden.
Also:
Habe einen Agenten geschrieben. Wenn man in der Maske "Eingabe" das Feld ErrinerungDatum füllt, dann soll an diesem Tag automatisch eine E-Mail an den Autor gesendet werden.
Bei der Dokumentenauswahl habe ich also alle Masken des Typs "Eingabe" eingetragen und folgenden Code zusammen gebastelt.


--- Code: ---Sub Initialize
Dim uiws As New notesuiworkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim senddoc As NotesDocument
Dim rtItem As NotesRichTextItem

Dim strSubject As String
Dim strDocName As String
Dim strBody As Variant
Dim strEmpfaenger As String

Dim datum As Notesdatetime
Dim strDatum As String
Dim tmp As Variant

Set db = session.Currentdatabase
Set doc = uiws.Currentdocument.Document
Set senddoc = New NotesDocument(db)

Set datum= New notesdatetime (Today)
strDatum = Format(Day(datum.Dateonly),"00") & "." & Format(Month(datum.Dateonly),"00") & "." & Format(Year(datum.Dateonly),"0000")
tmp = doc.GetItemValue("ErinnerungDatum")
strDocName = doc.GetItemValue("Dokumentname")(0)

If tmp(0) = strdatum Then

Set rtitem = New NotesRichTextItem( senddoc, "Body" )
strEmpfaenger = doc.GetItemValue("Autor")(0) 
With senddoc
.Form = "Memo"
.SendTo = doc.GetItemValue("Autor")(0)
.SendFrom = "Test@Test.de"
.Principal = "Test@Test.de"
.DisplaySent ="Test"
.Subject = "Automatische Erinnerung - " + strDocName
End With
strBody = "Autmatische Erinnerung! Folgen Sie dem Link um zum Dokument zu gelangen" & Chr(13) & Chr(13)
Call rtitem.AppendText(strBody)
Call rtItem.AppendDocLink(doc, doc.UniversalID)
'senden
Call senddoc.send(False)
End If
End Sub
--- Ende Code ---

Nur leider passiert nichts wenn ich den Agenten ausführe. Habe es auch mit Formelsprache probiert, allerdings weiß ich dort nicht, wie ich die Felder SendFrom, Principal usw. ausfüllen kann. Deshalb wollte ich es mit LS probieren aber irgendwie passiert halt gar nichts. Dabei ist zu sagen, dass der Code so in der Maske selber einbandfrei funktioniert, nur im Agenten irgendwie nicht. Kann es sein, dass ich das doc aders setzen muss?

Kann vll. jemand helfen???

Vielen Dank im voraus

m3:
1) "ErinnerungDatum" ist hoffentlich ein Datums- und kein Textfeld (Forumssuche für die Begründung, warum das schlecht wäre)

2) Wenn "ErinnerungDatum" ein Datumsfeld ist, wird der Vergleich mit einem String "If tmp(0) = strdatum Then" nicht klappen.

3) Du liest das den Datumswert aus dem aktuell im UI geöffneten Dokument aus, ich habe aber eher den Eindruck, dass Du einen zeitgesteuerten Agent willst, der einmal in der Nacht läuft und die Mails verschickt. Da bist Du mit "Set doc = uiws.Currentdocument.Document" am Holzweg und willst Dir eher notesView.GetAllDocumentsByKey bzw. notesView.FTSearch ansehen

dirk_2909:
und bau noch ein prints ein und unbedingt eine Fehlerbehandlung.
Dann siehst Du was klappt und was nicht klappt.

Dann wird auch die meldung "Agent funktioniert" nicht ein wenig genauer ;-)

Noch ein paar Fragen:
Wie soll der Agent gestartet werden?
Wo soll er laufen?
....

DannyCrown:
also als erstes, ja ErinnerungDatum ist ein Datumsfeld.
Deine Intention war schon ganz richtig, der Agent soll einmal früh morgens gestartet werden und dann überprüfen, ob das Erinnerungsdatum mit dem heutigen Datum übereinstimmt außerdem soll der Agent auf dem Server laufen.
Danke für die schnelle Hilfe. Dann werd ich mir mal notesView.GetAllDocumentsByKey bzw. notesView.FTSearch ansehen.

dirk_2909:

--- Zitat ---soll einmal früh morgens gestartet werden
--- Ende Zitat ---

Wie soll er gestartet werden?

Ich denke mal periodisch enmal am Tag

Dann entferne aus dem Script alle UI-Objekte .

Den Datumsvergleich kannst Du auch einfacher machen:


--- Code: ---
If doc.GetItemValue("ErinnerungDatum")(0) >= Date Then
..
--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln