Domino 9 und frühere Versionen > ND7: Entwicklung
Agent um Erinnerungsmails als Aufgaben zu übernehmen
Demian:
Moin, moin,
ich habe mich entschlossen im Postsave der Erinnerung einen Agenten zu starten, der die erforderlichen Aufgaben erstellt.
Maske _Kalendereintrag
--- Code: ---Sub Postsave(Source As Notesuidocument)
'**************************************************************************************
'Dieser Code startet den Agenten "Aufgabe erstellen" und übergibt NoteID der erstellten Erinnerung
'**************************************************************************************
If AufgabeErstellen = True Then
Dim s As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim agent As NotesAgent
Set db = s.CurrentDatabase
Set agent = db.GetAgent("Aufgabe erstellen")
Set doc = source.Document
Call agent.RunOnServer(doc.NoteID)
End If
If (source.InPreviewPane) Then Exit Sub
Call csEventObj.PostSave()
End Sub
--- Ende Code ---
Doc ist zwar gesetzt, aber seltsamerweise ist doc.NoteID = "" ???
Entspricht source nicht der eben gespeicherten Erinnerung?
Gruß
Demian
koehlerbv:
Source ist das Frontend-Objekt Deines eben gespeicherten Dokuments - richtig. Und NoteID steht dort zur Verfügung. Auch Deine Syntax ist korrekt.
Wo stellst Du denn fest, dass NoteID ein Leerstring sein soll?
Bernhard
Demian:
im Debugger. Nachdem der Agent mehrmals scheinbar nicht gestartet ist, hab ich nen Log-Script mitlaufen lassen.
Sub Initialize
'*******************************************************************************************************
'Funktionen:
'Aufgabe anhand der vom User erzeugten Erinnerung erstellen
'Mailbenachrichtigung der Erinnerung hinzufügen
'Beschreibung:
'Wird im Postsave der Maske _Kalendereintrag nach dem Originalcode ausgeführt.
'
'Parameter:
'ParameterDocID = erstellte Erinnerung
'*******************************************************************************************************
'Allgemein
Dim agent As NotesAgent
'*******************************************************************************************************
Set s = New NotesSession
Set db = s.CurrentDatabase
Set agent = s.CurrentAgent
Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","Initialize",_
"Suche Erinnerung")
Set Erinnerung = db.GetDocumentByID(agent.ParameterDocID)
If Not (Erinnerung Is Nothing) Then
Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","Initialize",_
"Erinnerung gefunden")
Call MailBenachrichtigung(Erinnerung)
Call AufgabeErstellen(Erinnerung)
Else
Call Logeintrag_Erstellen(db.Title,s.CommonUserName,"Agent: Aufgabe erstellen","Initialize",_
"Erinnerung nicht gefunden")
End If
End Sub
Das 1. Log macht er noch. Er kommt also scheinbar bis Set Erinnerung = db.GetDocumentByID(agent.ParameterDocID) und schmiert dann ab.
Gruß
Demian
PS: Habe jetzt nochmal im Debugger geschaut. Es ist doch kein Leerstring sondern "0". Allerdings auch schon bei Source.
koehlerbv:
"Scheint abzuschmieren" ist nicht so hilfreich.
Lass Dir doch mal die NoteID loggen - und baue ein ErrorHandling ein.
Bernhard
Demian:
also, er wirft den Fehler 4270 Invalid NoteID im Agenten aus. Hab mal nen Screenshot aus dem Debugger bei.
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln