Das Notes Forum

Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: spookycoder am 11.07.19 - 08:57:22

Titel: NotesViewEntryCollection - Intersect
Beitrag von: spookycoder am 11.07.19 - 08:57:22
Einen schönen guten Morgen zusammen,

ich habe hier einen schöne NotesViewEntryCollection von einem View der in der UI angezeigt wird.

Ich will die Einträge mittels COM nach Excel exportieren, das funktioniert auch schön, auch in der Sortierreihenfolge die im Client angezeigt wird.

Will ich nun nur die Einträge exportieren, welche der Benutzer in der UI markiert habe, hole ich mir aus der UIView die Documents (ist eine NotesDocumentCollection) und wende die mit der Intersect-Methode auf die NotesViewEntryCollection an.

Funktioniert prinzipiell auch, nur ist dann leider die Sortierung der verbleibenden Einträge eine andere. Ein neuerliches resortView auf die View hat leider auch nix gebracht.

Muss ich damit leben, oder seht ihr hier eine andere Möglichkeit noch?

lg

Harald
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: Peter Klett am 11.07.19 - 09:20:36
Wenn Deine NotesViewEntryCollection richtig sortiert ist, dann gehe doch durch die und übertrage die Daten nach Excel in Abhängigkeit davon, ob das jeweilige Dokument in der NotesDocumentCollection enthalten ist. Dann hast Du die richtigen Dokumente in der richtigen Reihenfolge
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: Tode am 11.07.19 - 10:00:57
Hast Du denn die "Intersect"- Methode in beide Richtungen probiert? Also dcSelected.Intersect(dcViewEntries) und dcViewEntries.Intersect(dcSelected)? Ich wette, die Reihenfolge unterscheidet sich in beiden Fällen. Ich würde fast wetten, dass die zweite Methode die Reihenfolge der View beibehält...
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: Peter Klett am 11.07.19 - 10:21:23
Hast Du denn die "Intersect"- Methode in beide Richtungen probiert? Also dcSelected.Intersect(dcViewEntries) und dcViewEntries.Intersect(dcSelected)? Ich wette, die Reihenfolge unterscheidet sich in beiden Fällen. Ich würde fast wetten, dass die zweite Methode die Reihenfolge der View beibehält...
Das klingt sinnvoll und wäre wohl besser (performanter und einfacher geschrieben), als mein Vorschlag
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: eknori am 11.07.19 - 11:36:45
Das Beibehalten der Sortierung gibt es erst ab V10. Da hat die Methode einen zusätzlichen Parameter.
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: spookycoder am 11.07.19 - 12:53:33
Hallo,

danke für die vielen Antworten.

Sorry, meine Angabe war nicht  ganz vollständig:

@Torsten: Ich wende die Intersect-Methode der NotesViewEntryCollection an, ich will ja die vielen Einträge dezimieren, sodass in der NotesViewEntryCollection nur die Dokumente drinnen bleiben, welche auch in der NotesDocumentCollection sind. Umgekehrt macht es meiner Meinung nach keinen Sinn, dh. wenn ich die Intersect-Methode auf der NotesDocumentCollection anwende, verändert sich deren Inhalt ja nicht, es sind ja nur Dokumente drinnen, die ohnehin in der NotesViewEntryCollection sind.

Den Ansatz von Peter kann ich natürlich machen, schnell ist das natürlich nicht. Wenn es allerdings nicht anders geht werde ich das so machen müssen, jedoch einen ViewNavigator mit dem Caching verwenden damit die Schleife halbwegs performant bleibt.

Ullrich, welche Methode meinst Du denn konkret, die Resort-Methode des Views mit dem programmatischen Name der Spalte? Bin gespannt ob ich dann das so hinkriege, ich wollte die Methode recht generisch haben, sodass ich diese Aktion in jede View reinwerfen kann ohne jetzt speziell Anpassungen machen zu müssen.

danke & lg

Harald
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: eknori am 11.07.19 - 13:33:14
Die intersect methode
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: jBubbleBoy am 11.07.19 - 14:02:16
wenn diese Funktion einen neuen Parameter bekommt, dann würden ja alte Programme nicht mehr laufen, deshalb glaube ich nicht daran ;)
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_INTERSECT_METHOD_VIEWENTRYCOLLECTION.html
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: spookycoder am 11.07.19 - 14:08:27
wenn diese Funktion einen neuen Parameter bekommt, dann würden ja alte Programme nicht mehr laufen, deshalb glaube ich nicht daran ;)
https://www.ibm.com/support/knowledgecenter/en/SSVRGU_10.0.1/basic/H_INTERSECT_METHOD_VIEWENTRYCOLLECTION.html

Sie steht eh schon dort:

maintainOrder

(Optional) Boolean. Specifies that after the Intersect operation is complete, whatever order the originating view was in when the NotesEntryCollection was created will remain in force for subsequent entry processing. That is, either the default view order will be used or that last set by calling ResortView.
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: eknori am 11.07.19 - 14:08:50
der neue Parameter heisst maintainOrder ...

https://www.eknori.de/2019-06-06/get-sorted-results-from-dql-queries/

Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: jBubbleBoy am 11.07.19 - 14:11:16
tatsächlich, man sollte die Hilfe doch immer bis zum Ende lesen :)
Titel: Re: NotesViewEntryCollection - Intersect
Beitrag von: spookycoder am 11.07.19 - 16:38:37
Ja, der kleine Parameter macht den großen Unterschied - jetzt brauche ich nur noch warten, dass wir den 10er Client ausrollen und die Server komplett umgestellt haben :)

Danke für die Tippps!