NotesViewEntries.Intersect(NotesDocumentCollection, True) liefert falsche Dokumente

von Thomas Bahn,
assono GmbH, Standort Kiel,

Schon das Fehlverhalten zu beschreiben, ist nicht ganz einfach...

Folgendes Szenario: Der Benutzer wählt in einer Ansicht einige Dokumente aus und klickt auf eine Aktion, die einen Agenten startet. Der Agent soll die gewählten Dokumente in der Reihenfolge bearbeiten, wie sie in der Ansicht dargestellt werden.

Erstes Problem: Wie komme ich an die vom Benutzer ausgewählten Dokumente?

Antwort:

Set coll = uiws.CurrentView.Documents

Folgeproblem: Das ist eine NotesDocumentCollection, die per Definition unsortiert ist. Wie komme ich jetzt an die sortierte Liste der Dokumente?

Antwort:

Set view = currentDB.GetView(uiws.CurrentView.ViewName)
Set entries = view.AllEntries
Call entries.Intersect(coll, True)

Der zweite Parameter bei Intersect gibt an, dass die erzeugte NotesViewEntryCollection die Sortierung beibehalten soll.

Jetzt wäre ich eigentlich fertig. So funktioniert es. Habe ich so auch schon benutzt.

Aber: Als ich es gestern wieder verwendet habe, bekam ich plötzlich die falschen Dokumente, also solche, die der Benutzer gar nicht ausgewählt hatte (die aber schon in der Ansicht vorhanden sind).

Ich habe auf die Einträge über entries.GetFirstEntry/entries.GetNextEntry zugegriffen.

Als erstes habe ich das umgestellt auf entries.GetNthEntry. Problem bestand weiter.

Nach vielen vergeblichen Versuchen und Grübeln kam der Geistesblitz: Es hängt von der Ansicht ab, genauer: von der Anzahl der Einträge in der Ansicht.

Eine längere Versuchsreihe ergab: enthält die Ansicht mehr als ca. 16.350 Dokumente, tritt der Fehler auf.

Betroffen ist Notes 10.0.1FP2 (und V11 Beta 2), aber nicht 9.0.1FP6. Irgendwo dazwischen gab es die entscheidende Änderung.

Bemerkung am Rande:

Wenn der Benutzer z. B. 3 Dokumente ausgewählt hat, lief GetFirstEntry/GetNextEntry über sehr viel mehr Dokumente (die falschen).

Hat die Ansicht 23.028 Einträge, läuft GetFirstEntry/GetNextEntry über 6.677 Einträge.
Hat die Ansicht 16.429 Einträge, läuft GetFirstEntry/GetNextEntry über 81 Einträge.
Hat die Ansicht 16.381 Einträge, läuft GetFirstEntry/GetNextEntry über 33 Einträge.
Hat die Ansicht 16.353 Einträge, läuft GetFirstEntry/GetNextEntry über 5 Einträge.

Mit einer kleinen "Unschärfe" beträgt die Differenz immer 16.348.

Das könnte Sie auch interessieren:

HCL Notes und Domino Entwicklung
Fachbeitrag HCL Notes Entwicklung

Sie haben Fragen zu diesem Artikel? Kontaktieren Sie uns gerne: blog@assono.de

Sie wollen eine individuelle Lösung? Kontaktieren Sie uns

Weitere interessante Artikel

Sie haben Fragen?

Wenn Sie mehr über unsere Angebote erfahren möchten, können Sie uns jederzeit kontaktieren. Gerne erstellen wir eine individuelle Demo für Sie.

Wir verwenden Ihre Daten, um Sie einmalig per E-Mail zu kontaktieren. Wir geben Ihre Daten nicht an Dritte weiter. Siehe: Datenschutzhinweise
assono GmbH

Standort Kiel (Zentrale)
assono GmbH
Lise-Meitner-Straße 1–7
24223 Schwentinental

Standort Hamburg
assono GmbH
Bornkampsweg 58
22761 Hamburg

Telefonnummern:
Zentrale: +49 4307 900 407
Vertrieb: +49 4307 900 402

E-Mail-Adressen:
kontakt@assono.de
bewerbung@assono.de