Mails aus Inbox verschieben Lotus Script

  • Sorry hatte ich übersehen. :(


    Hier ein Lösungsvorschlag.


    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim view As NotesView
    Dim doc As NotesDocument
    Dim nextdoc As NotesDocument


    Set db = session.CurrentDatabase
    Set view=db.GetView("$Inbox")
    Set doc=view.GetFirstDocument

    'alle Dokumente der Inbox durchlaufen
    While Not doc Is Nothing
    Set nextdoc=view.GetNextDocument(doc)
    'Mail verarbeiten
    ...


    'verschieben in Order Ablage und aus Inbox entfernen
    Call doc.PutInFolder( "Ablage" )
    Call doc.RemoveFromFolder("$Inbox")


    [color=0000FF]Call view.Refresh[/color]


    Set doc=nextdoc

    wend


    So funktioniert es zwar (zumindest bei mir),
    aber wirklich elegant ist das nun nicht mehr,
    da der Ordner ja jedesmal refresht wird.
    Der elegante Weg ist, wie ascabg schon weiter oben angedeutet hat, alle Dokumente in einer Collection abarbeiten und dann
    per col.PutAllInfolder(..) und col.Removeallfromfolder(...)
    verschieben bzw. aus dem Ordner entfernen.


    Gruß
    MeinerEiner

  • Hallo,


    also so wie ich das sehe wird in der Inbox beim verschieben der Mail automatisch ein Refresh durchgeführt.
    Daher überspringt auch mein Code Dokumente.


    Ich glaube ich weiß wo mein Haken ist. Falls ich falsch lieg, korregiert mich bitte.


    Bei dem ersten Aufruf von doc.getfirstdocument zeige ich auf das erste Dokument in der View. Verarbeite es und verschieb es danach.


    Jetzt aktuaklisert sich die Ansicht und doc schaut immernoch auf das erste Dokument in der Ansicht (was eigentlcih schon das zweite ist). Mit dem doc.getnextdocument landet mein Zeiger auf dem zweiten Dokument (was eigentlcih das dritte in der ursprünglichen View war). Somit überspringe ich meine Dokumente.


    Mit der Lösung, immer auf das erste Dokument zuzugreifen , kann ich im Moment leben.
    Werde aber den Ansatz mit der Collection demnächste einzubauen.


    Danke erstmal für Eure Hilfe.


    Gruß
    Marco

  • Nein das hast du dir mit deiner letzten Änderung selbst eingebaut und zwar mit dem call view.refresh, denn dieses aktualisiert das NotesView-Objekt mit den zwischenzeitlich stattgefundenen Änderungen