Domino 9 und frühere Versionen > Entwicklung

aus mehreren Adressaten jeweils ein dokument mache

(1/2) > >>

bordi:
Ich möchte aus Dokumente in einer Datenbank, die mehrere Adressaten (SendTo) besitzen, einzelne Dokumente mit jeweils einem Adressaten machen.
Dieser Agent soll "vor eingang neuer mail" laufen.
leider funktioniert er nicht wie gewünscht, da am ende in jedem dokument, der selbe Adressat drinsteht.
was mache ich falsch???
danke für die hilfe

'****** Sinn des Agenten ist es die Lesefelder zu füllen, damit die Abteilungen nur ihre eigenen Dokumente lesen können
Sub Initialize
     Dim session As New NotesSession
     Dim db As NotesDatabase
     Dim dc As NotesDocumentCollection
     Dim doc As NotesDocument
     Dim item As NotesItem
     Set db = session.CurrentDatabase
     Set dc = db.allDocuments
     Set doc = dc.GetFirstDocument
     Dim gruppe As String
     Dim i As Integer
     Dim flagitem As NotesItem
     Dim max As Integer
     Dim sendtosave() As String
     
     While Not(doc Is Nothing)
           If Not (doc.HasItem( "processed" ) ) Then '*** Dokument schon durch Agent bearbeitet worden?
                 Set flagitem = New NotesItem( doc, "processed", 1 ) 'flag = 1 '*** Dokumentstatus wird als bearbeitet gesetzt
                 
                 max = Ubound(doc.SendTo)
                 Redim sendtosave(0 To max) As String      
                 
                 'SendTo-Feld zwischenspeichern
                 For i = 0 To max
                       sendtosave(i) = doc.SendTo(i)            
                 Next
                 
                 For i = 0 To Ubound(sendtosave)
                       'Nur gültige Adressaten zulassen                  
                       If Not Strright (sendtosave(i), "#") = ""  Then
                             'Richtigen Adressaten setzen                              
                             Set item = doc.ReplaceItemValue( "SendTo", sendtosave(i) )
                             
                             'Dokument wird gespeichert
                             Call doc.Save(True, True)
                             Call session.UpdateProcessedDoc( doc )            
                       End If
                 Next
                 
           End If
           'Nächstes unbearbeitetes Dokument
           Set doc = dc.GetNextDocument(doc)
     Wend
     
End Sub

Rob Green:
1. Frage: wo werden die neuen Docs erstellt in Deinem Codesnippet?

2. Frage: wenn Du das Teil im Client laufen läßt und den Debugger anhast, läuft alles reibungslos durch?

Glombi:
Hi bordi,

Du erstellt ja gar keine neuen Dokumente, sondern iterierst im Dok. über alle Einträge im Feld SendTo und trägst dann den letzten ein.
Ausserdem wird kein Lesefeld gesetzt.

Wenn ich das richtig verstanden habe, will Du pro Eintrag im Feld SendTo eine Kopie des Dokuments erstellen (sofern ein "#" vorkommt).

Das könntest Du dann so machen:

dim newdoc as NotesDocument

For i = 0 To Ubound(sendtosave)
   'Nur gültige Adressaten zulassen    
   If Not Strright (sendtosave(i), "#") = ""  Then
    'Richtigen Adressaten setzn      

set newdoc = doc.CopyToDatabase( db )
newdoc.processed = 1

    Set item = newdoc.ReplaceItemValue( "SendTo", sendtosave(i) )

'Lesenamensfeld setzen
item.IsReaders = true
     
    'Dokument wird gespeichert
    Call newdoc.Save(True, True)  
    Call session.UpdateProcessedDoc( doc )  
   End If
  Next

bordi:
1. hier:

For i = 0 To Ubound(sendtosave)
   'Nur gültige Adressaten zulassen    
   If Not Strright (sendtosave(i), "#") = ""  Then
    'Richtigen Adressaten setzen      
    Set item = doc.ReplaceItemValue( "SendTo", sendtosave(i) )
     
    'Dokument wird gespeichert
    Call doc.Save(True, True)  
    Call session.UpdateProcessedDoc( doc )  
   End If
  Next

2. im debugger zeigt er das bearbeitete sendto feld richtig gefüllt an.
zum beispiel bei einem dokument, das reinkommt mit drei adressaten, soll er drei dokumente mit jeweils einem der drei adressaten machen. wie gesagt im debugger stimmts, aber nachher habe ich drei mails mit einem identischen adressaten im sendto feld.

tja, keine ahnung was für einen mist ich mache, oder ob es am server liegt?
???

bordi:
danke glombi !!!

das probiere ich morgen mal aus.
ich hatte auch schon die idee mit "copytodatabase"
aber auf einmal hatte ich jede mail mehrfach.
mit "processed = 1" und "newdoc" anstatt "doc"
sollte es aber klappen

cu bordi

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln