Domino 9 und frühere Versionen > ND7: Entwicklung

Agent um Erinnerungsmails als Aufgaben zu übernehmen

<< < (2/5) > >>

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