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 |