Du musst dafür sorgen, dass die Garbage-Collection die Dokumente nicht aus dem Speicher wirft. Dies erreichst du, indem du dir die Dokumente in einer Liste/Array merkst. Da jede Instanz eines Dokuments nur 1x im Speicher vorkommt, bekommst du so im 2. Durchlauf das geänderte, aber nicht gespeicherte Dokument.
Dim cache list as NotesDocument
Set nd = nc.Getfirstdocument()
While Not (nd Is Nothing)
set cache(nd.NoteId) = nd ' Halte eine Referenz auf jedes Doc.
Call nd.Replaceitemvalue("Test", "123")
Set nd = nc.Getnextdocument(nd)
Wend
Set nd = nc.Getfirstdocument()
While Not (nd Is Nothing)
MsgBox nd.Getitemvalue("Test")(0)
Set nd = nc.Getnextdocument(nd)
Wend
erase cache
So ginge es, finde aber obigen Code unschön, nochdazu gibt es bei ~8000 Dokumenten Out of memory-Fehler, welche den Client und Server abstürzen lassen. Besser wäre es wohl wirklich alles in einer Schleife zu machen.
Gruß
Roland