Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Raimund am 09.01.03 - 11:34:15
-
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
-
@ 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).
-
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
-
versuch es mal mit klammern :
If ((doc.ResourceType(0) = "1") And (doc.AlreadySent (0)= "")) Then
gruss
-
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
-
Hi Raimund,
das Fehld "AlreadySent" gibt es Standardmässig nicht, Deine Abfrage basiert aber darauf. Warum machst Du nicht einen eigenen View, welches als Selection auf dieses Feld basiert, d.h. es werden alle Dokumente angezeigt, welche nicht das entsprechende Feld bzw. den Wert "YES" haben. Anschliessend machst Du eine ViewEntryCollection über den entsprechenden View. Somit hast Du weniger Dokumente zu bearbeiten.
Meff ;)