Autor Thema: Agent  (Gelesen 1631 mal)

Offline Raimund

  • Junior Mitglied
  • **
  • Beiträge: 83
  • Geschlecht: Männlich
Agent
« 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
« Letzte Änderung: 09.01.03 - 13:08:30 von Raimund »

klaussal

  • Gast
Re:Agent
« Antwort #1 am: 09.01.03 - 13:34:20 »
@ 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).

Offline gulp

  • Frischling
  • *
  • Beiträge: 24
  • Geschlecht: Weiblich
Re:Agent
« Antwort #2 am: 09.01.03 - 13:46:45 »
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

Offline Till_21

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 708
  • Geschlecht: Männlich
  • I love Germany
Re:Agent
« Antwort #3 am: 09.01.03 - 13:48:53 »
versuch es mal mit klammern :

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

gruss

Offline Raimund

  • Junior Mitglied
  • **
  • Beiträge: 83
  • Geschlecht: Männlich
Re:Agent
« Antwort #4 am: 10.01.03 - 09:06:20 »
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
« Letzte Änderung: 10.01.03 - 09:14:45 von Raimund »

Offline Meff

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.095
  • Geschlecht: Männlich
  • Das Denken der Zukunft muß Kriege unmöglich machen
    • apparet id etiam caeco
Re:Agent
« Antwort #5 am: 10.01.03 - 16:35:03 »
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 ;)
"Zwei Dinge sind zu unserer Arbeit nötig: Unermüdliche Ausdauer und die Bereitschaft, etwas, in das man viel Zeit und Arbeit gesteckt hat, wieder wegzuwerfen."
Albert Einstein

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz