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