Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: stitze am 15.03.05 - 13:41:00
-
Hallo,
ich brauche eine leere NotesDocument Collection um während des Programmablaufes Dokumente über die AddDocument(NotesDocumen) Mehtode der Collection hinzufügen zu können.
Kann mir eine sagen, wie ich die Colelction Initialisieren muss damit dies möglich ist?
-
Hallo
so:
Dim collDocs as NotesDocumentCollection
Set collDocs = view.GetAllDocumentsByKey( "" )
Dirk
-
ein New gibt es leider nicht, aber mach doch einen Search, FTSearch mit einem Query, der Dir 0 Dokumente zurückgibt.
Oder per GetAllDocumentsByKey usw.
-
Jo, danke so funktioniert das ;)
-
Weitere Möglichkeiten siehe auch hier:
http://www.atnotes.de/index.php?topic=17860.0
Problematisch kann allerdings sein, dass die Add-Methode nicht zuverlässig am Ende der Collection ein neues Doc einfügt. Wenn man sich auf die Sortierung verlassen muss: Finger weg, hier sollte man dann besser mit einem Array aus NotesDocuments arbeiten.
-
... die Idee mit dem Search ist nicht so gut - mach das mal in einer DB mit mehreren 100.000 Dokumenten, die müssen auf die Eignung untersuchgt werden.
Ich mache es mit der Collection für Profildokumente einer Datenbank => NotesDatebase.GetProfileDocumentCollection - oder ähnlich - und einem Maskennamen, den es nicht gibt, wie zum Beispiel "dummy" - das ist nach meiner Erfahrung deutlich schneller, denn Profildokumente liegen bei Notes permanent im Cache vor und müssen nicht erst gesucht werden...
ata
-
Wobei man mit dem Namen auch aufpassen muss, man kann Profildokumente problemlos hinterlegen mit einem Namen, der keiner Maske entspricht
-
... mit dc.Count kannst du feststellen, daß die Collection leer ist. Dokumente die der Collection dann hinzugefügt werden sind keine Profildokumente und werden es dadurch auch nicht - wo siehst du ein Problem?
Toni
-
Anton, ich denke mal auch, Du würdest auch keinen anzunehmenden Namen für ein ProfileDoc verwenden - und die ProfileDoc-Namen, auch wenn sie ja nicht Masken entsprechen müssen, sind ja den Programmierern bekannt.
Ergo - so, wie Du es schon angedeutet hast:
NotesDatabase.GetProfileDocCollection ("D-IES-N&NAMN_GIB/NIHT_!"
Wenn dann coll.Count > 0 ist, dann kann man das abfangen und den sabotierenden Co-Prgrammierer die Zähne nach aussen stülpen ;D Ein wohl mehr als unwahrscheinlicher Fall, er dann auch noch abgefangen werden kann.
Da der von Anton genannte Zugriff auf eine "Nix-Collection" einer der schnellsten Verfahren ist für den Zugriff auf Dokumente (allerdings: ProfileDocs sind erst ab Verwendung im Cache, Toni, vorher nicht. Aber sie stehen in einer eigenen DB-internen Table ...), verstehe ich den Einwurf von Herrn Augustiny nicht so richtig.
Bernhard
-
Genau, Anton, man sollte noch überprüfen, ob die Collection dann wiklich leer ist, dann ist es kein Problem.
-
@Jens
... ich habe bei mir nachgeschaut - ich habe es abgefangen über den Count - alles im reinen...
@Bernhard
... danke für den Hinweis mit dem Cache - ich ging bisher davon aus, daß Profildokumente mit dem Öffnen der DB bereits im Cache sind...
schönes - sonniges Wochenende - geniesst die Sonne... :-)))
Toni