Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Basti* am 10.01.13 - 09:17:18

Titel: Wie DocCollection aus View erstellen?
Beitrag von: Basti* am 10.01.13 - 09:17:18
Hallo zusammen!

Ich haben eine View und möchte alle Docs daraus in einer Doc.Collection zusammenfassen. Ich habe eine Methode, aber sie ist zu langsam. Geht das irgendwie schneller?

Ich schnappe mir dazu die ViewEntryCollection mit

Set vc = view.AllEntries

Und dann wird daraus in einer Schleife die DocCollection aufgebaut

Set entry = vc.GetFirstEntry()
   
While Not (entry Is Nothing)   
   Set doc = entry.Document
   Call dc.AddDocument(doc)
   Set entry = vc.GetNextEntry(entry)
Wend

Soweit so schick. Problem: bei 50.000 Docs in der View dauert das locker 10 Minuten.
Gibt es eine Methode, das zu beschleunigen?

Grüße
Basti

Titel: Re: Wie DocCollection aus View erstellen?
Beitrag von: Peter Klett am 10.01.13 - 09:21:22
Ich erstelle für solche Fälle eine separate Ansicht, bei der in der ersten sortierten Spalte ein fester Wert (z.B. "1") eingetragen ist und hole mir die Collection mit NotesView.GetAllDocumentsByKey ("1")
Titel: Re: Wie DocCollection aus View erstellen?
Beitrag von: Basti* am 10.01.13 - 09:27:21
Raffiniert!! 
Danke Dir für den Tipp :)

Basti
Titel: Re: Wie DocCollection aus View erstellen?
Beitrag von: pram am 10.01.13 - 09:36:49
Vielleicht hilft auch folgendes:

Zitat
Merge method
Syntax
Call notesDocumentCollection.Merge( inputNotes )

Parameters
inputNotes

String, NotesDocument, NotesDocumentCollection, NotesViewEntry or NotesViewEntryCollection. The NotesDocument, NotesDocuments, NotesViewEntry or NotesViewEntries that the method will merge with the NotesViewEntryCollection.

Eine View kostet nämlich wieder zusätzliche Ressourcen...
allerdings hat man hier das Problem, dass man nicht so einfach eine leere NotesDocumentcollection erzeugen kann (gibt eine undokumentierte Methode dafür)

Gruß
Roland

Titel: Re: Wie DocCollection aus View erstellen?
Beitrag von: Basti* am 10.01.13 - 09:47:13
Auch spannend!

allerdings hat man hier das Problem, dass man nicht so einfach eine leere NotesDocumentcollection erzeugen kann (gibt eine undokumentierte Methode dafür)

So knifflig ist es gar nicht. Meine Methode für eine leere DocumentCollection:
   
   Set db = session.CurrentDatabase
   Set dc = db.GetProfileDocCollection("IrgendEinNameDenEsNichtInDerDBGibt")
   
Titel: Re: Wie DocCollection aus View erstellen?
Beitrag von: it898ur am 10.01.13 - 09:53:29
Die merge-Funktion ist aber erst neu mit Notes 8 und dies hier ist das 7er-Forum !

Gruß

André
Titel: Re: Wie DocCollection aus View erstellen?
Beitrag von: Driri am 10.01.13 - 10:57:36
Roland hat es angesprochen, ab Domino 8 gibt es folgende undokumentierte Funktion zum Erstellen einer leeren DocumentCollection :

Zitat
Dim coll As NotesDocumentCollection
Set coll = db.CreateDocumentCollection

Siehe auch hier : http://www-01.ibm.com/support/docview.wss?uid=swg21368236
Titel: Re: Wie DocCollection aus View erstellen?
Beitrag von: Peter Klett am 10.01.13 - 11:22:10
Wenn man die separate View sparen möchte, kann man auch mit db.Search die Collection füllen, dort die Selektionsformel der Ansicht übergeben. Ist m.E. performant genug.