ReplaceItemValue funktioniert nur im Debugger mit Breakpoint

  • Hallo zusammen,


    ich habe hier ein seltsames Problem.
    Durch einen Agenten werden alle Mails aus ausgewählten Ordnern in einen entsprechenden neuen Ordner einer anderen DB verschoben.
    Hierbei kommt es vor, dass User Mails aus Gesendet in die Ordner gezogen haben.
    Um diese Mails nicht doppelt zu kopieren (1x im Ordner und 1x in Sent) und somit Dubletten zu erzeugen, setzen ich auf alle Dokumente der Ordner ein Document.ReplaceItemValue("ExcludeFromView","S").


    Dieses Script funktioniert nur, wenn man im Debugger einen Haltepunkt auf Call ve.Document.ReplaceItemValue("ExcludeFromView","S") setzt.
    Wenn dieser zum Bsp. auf Call ve.Document.Save(True,False) sitzt ist das Feld ExcludeFromView nicht in der Itemliste des aktuellen Docs vorhanden.
    Wenn der Debugger ausgeschaltet ist wird das Feld auch nicht gesaved.


    Set source = dbSource.GetView( f )
    Set vc = source.AllEntries
    Set ve = vc.GetFirstEntry
    Do Until ve Is Nothing
    'TRI 20090915 : Setzten des ExcludeFromView auf die alten Dokumente
    Call ve.Document.ReplaceItemValue("ExcludeFromView","S")
    'Set item = ve.Document.ReplaceItemValue("ExcludeFromView","S")
    Print "ExcludeFromView "
    Call ve.Document.Save(True,False)
    Set ve = vc.GetNextEntry( ve )
    Loop


    Dieses Verhalten tritt unter 7 und 8 im Client auf.


    Hat jemand eine Idee woran es liegt, das der Wert nicht in das Dokument geschrieben wird?


    Bin für jede Anregung dankbar.
    Ich habe auch den gesamten Agenten mal angehangen.


    Gruß Thomas

  • Hi,


    Ich hatte einmal ein aehnliches Problem.


    Geloest habe ich es durch folgendes


    Code
    Set vc = source.AllEntries 
    Call vc.StampAll("ExcludeFromView", "S")


    Wieso es zu dem geschildertem Verhalten kan, habe ich bis dato noch nicht finden koennen.


    Andreas

  • Danke Andreas,


    dies war genau die Funktion, die ich gesucht habe.
    Jetzt klappt es.


    'Alle Dokumente in Collection mit ("ExcludeFromView","S") schreiben
    Call vc.StampAll("ExcludeFromView","S")


    Das Verhalten bleibt trotzdem sehr schleierhaft.
    Wieder was gelernt.


    Thx Thomas