Set doc = view.GetNextDocument(doc)
Danke Dir. Das ist mir mittlerweile auch aufgefallen, nachdem ich das zum Testen in einen Agenten gepackt habe.
Da konnte ich dann auch wenigstens den Debugger starten.
Im Agenten funktioniert jetzt alles und übertragen in das QuerySave hängt der Notes Client jetzt auch nicht mehr.
Allerdings war raum immer leer. Offenbar ist das Feld erst nach dem Speichern (durch den RnrMgr?) gepflegt.
Daher dann "RoomToReserve". Das musste vor dem Vergleich noch umkonvertiert werden.
Soweit so gut, aber... sobald auch nur irgendetwas nicht passt... sei es Zugriffsberechtigung auf die DB oder View nicht gefunden oder sonstwas... hängt der Client sich weg.
Ich hab daher noch ein ErrorHandling eingebaut, der im Falle eines Fehlers meinigen Code einfach überspringt.
Natürlich ist es an sich unsinnig, per Schleife durch alle Einträge zu laufen, auch wenn bereits einmal gefunden wurde. Man könnte hier theoretisch eine Suche einbauen oder zumindest die Schleife (vorzeitig) beenden, aber bei maximal 10 Einträgen wird es wohl keinen spürbaren Unterschied machen.
Der aktuelle Code-Schnipsel:
Dim nam As NotesName
raumname = source.Document.GetItemValue("RoomToReserve")(0)
Set db = session.GetDatabase("server/SRV/Gruppe", "Database.nsf", False)
If Not db.IsOpen Then Call db.Open("", "")
Set view = db.GetView("MyView")
Set doc = view.GetFirstDocument
Set nam = session.createName(raumname)
raum = nam.Abbreviated
While Not (doc Is Nothing)
raum2 = doc.Getitemvalue("RoomName")(0)
Print raum & " = " & raum2
If raum = raum2 Then
mytext = doc.RoomInformation
If source.Document.HasItem("Body") Then
Call source.Document.RemoveItem("Body")
End If
Call source.Document.AppendItemValue("Body", mytext)
Call source.Document.Save(True, False, False)
End If
Set doc = view.GetNextDocument(doc)
Wend