Das Notes Forum
Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet 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
-
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")
-
Raffiniert!!
Danke Dir für den Tipp :)
Basti
-
Vielleicht hilft auch folgendes:
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
-
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")
-
Die merge-Funktion ist aber erst neu mit Notes 8 und dies hier ist das 7er-Forum !
Gruß
André
-
Roland hat es angesprochen, ab Domino 8 gibt es folgende undokumentierte Funktion zum Erstellen einer leeren DocumentCollection :
Dim coll As NotesDocumentCollection
Set coll = db.CreateDocumentCollection
Siehe auch hier : http://www-01.ibm.com/support/docview.wss?uid=swg21368236
-
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.