Domino 9 und frühere Versionen > Entwicklung

Agent

(1/2) > >>

Raimund:
Hi Entwickler,

habe male wieder ein kleines Problem.

In der Ressourcen-DB soll eine Mail an eine Person gesendet werden, wenn Dokumente erstellt oder geändert wurden.

"Feld ResourceTyp enthält 1"

Habe folgendes gemacht, funktioniert aber nicht. Bekomme immer alle Mails für alle Docs, welche die ResourceType 1 haben.


Sub Initialize
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim memo As NotesDocument
   Dim Item As Variant
   Dim rtitem As NotesRichTextItem
   Dim session As New NotesSession
   EMail =  "raimund@sorange.com"
   
   Set db = session.CurrentDatabase
   Set collection = db.UnprocessedDocuments
   Set doc = collection.GetFirstDocument()
   Set memo = New NotesDocument( db )
   
   While Not(doc Is Nothing)
      If doc.ResourceType(0) = "1" And doc.AlreadySent (0)= "" Then  
'Set Item = doc.GetFirstItem( "ResourceName" )
         Set memo = New NotesDocument( db )
         
         memo.Form = "Memo"
         memo.Subject = "Ressourcenänderung "
         Set rtitem = New NotesRichTextItem( memo, "Body" )
         Call rtitem.AddNewLine( 1 )
         Call rtitem.AppendText( "Neue Reservierung oder Änderung ." )
         Call rtitem.AddNewLine( 1 )
         Call rtitem.AppendDocLink( doc, db.Title )
         
         Call rtitem.AddNewLine( 1 )
         'Call rtitem.AppendRTItem( Item )
         Call memo.Send( False, EMail )
         Call session.UpdateProcessedDoc( doc )
         Call doc.send(0)
         doc.AlreadySent = "YES"
         Call doc.save (True,True)
         
      End If
      Set doc = collection.GetNextDocument(doc)
   Wend
End Sub

Vielleicht habt Ihr eine Idee, wo der Fehler liegt?

Vielen Dank

Gruß
Raimund

klaussal:
@ raimund,

auf den ersten blick kann ich keinen fehler sehen. schon mal mit debugger geprüft ?

ich mache solche sachen am liebsten über eine ansicht, weil :
- kann mir bei bedarf die docs anzeigen lassen, die verarbeitet würden (man muss dann allerdings im script einen "view.refresh" einbauen).

gulp:
Hallo Raimund,

möglicherweise musst du die Dokumente, die der Agent bearbeitet hat, markieren, damit sie nicht noch einmal bearbeitet werden(bei periodischen Agents, die auf geänderte Dokumente laufen funktioniert es dann)

das macht man so:
Call collection.UpdateAll()
am Ende deines Agent.

Hoffentlich hilft dir das weiter
lg
gulp

Till_21:
versuch es mal mit klammern :

      If ((doc.ResourceType(0) = "1") And (doc.AlreadySent (0)= "")) Then  

gruss

Raimund:
Hi Entwickler,

vielen dank für die Antworten.

Habe alles getestet. Es gibt keine Fehler. Problem.
Es werden über 900 Docs gefunden, (Agent) welche die Kriterien erfüllen.
Vielleicht geht es mit den Optionen: Feld ResourceType enthält 1ANDBenutzt Maske 'Ressource, ...'??

Muss ich wohl testen :-) (Agent2)

Gruß
Raimund

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln