Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 30.01.03 - 10:59:34
-
Hallo Leute,
Ich habe mehrere Vorgänge die auf Collections
von ausgewählten Dokumenten zugreift.
Wenn der User aber nicht den Ordner wechselt, bleiben
die alten Dokumente in der Collection erhalten.
Wie löscht man nach Gebrauch eine Collection wieder ?
Ciao
Don Pasquale
-
@Don Pasquale,
Du brauchst nur ein collection.FTSearch() durchführen, mit dem Du nach einem Wert suchst, den es unmöglich geben kann!
( such doch zum Beispiel nach dem String "Stiefelchen & Kompasskalle")
Dann fliegen ja alle Docs, die diesen Text nicht enthalten, raus.
Und das dürften in diesem Falle alle sein.
Gruss
Thomas
-
@Thomator:
Interessante Idee,
muss ich mal ausprobieren.
Wieviel zeit verbraucht dass denn, wenn die Collection vorher sehr gross
war ?
Ciao
Don Pasquale
-
@Don Pasquale
ich glaube, das kommt auf die Textmenge in den Dokumenten an, ich habs bei sehr grossen Collections aber noch nicht versucht...
Gruss
Thomas
-
@Thomator
warum die Performance in den Keller ziehen ?
@Don
ein einfaches Set collection = Nothing tut es auch
cu
-
@Performance
Du hast eben Deinen Namen nicht ganz umsonst... ;D
Wenns so einfach geht, is ja super.
Da muss ich jetzt mal schnell bei mir auch ein paar Änderungen vornehmen...
Grüße und Danksagungen
Thomas
-
Performance : Der Name ist Programm
Wir danken recht herzlich
und sind begeistert !
Ciao
Don Pasquale
-
@Performance
der Spaß funktioniert bei mir nich! Guck mal:
Set nav = view.CreateViewNav
Set NVECol = Nothing
Set NVE = nav.GetFirst
und dann
Set NVE = nav.GetNext(NVE)
NVECol.AddEntry(NVE)
Wenn das funktioniert hätte, wär schön, aber NVECol wird nicht initialisiert. Folglich kann auch das AddEntry nicht funken...
Siehs´t Du einen Fehler?
Thomas
-
Set NVECol = Nothing
erst deklarieren dann initialisieren - das hier ist kein C++ also forward Deklarationen.
cu
-
@Performance
Hab ich doch, 4872 Quellcodezeilen weiter oben steht Dim NVECol as NotesViewEntryCollection
Gruss
Thomas
-
@Thomator
mit set object = Nothing wird das Objekt im Speicher "zerstört" bzw. das Programm kennt es nicht mehr.
also um ein Entry in die EntryCollection einzufügen muss das Objekt im Speicher vorhanden sein.
- du hast es sicher irgendwo in der x-ten Zeile initialisiert
Set NVECol = view.GetAllEntriesByKey( "Hello again", False)
jetzt kannst du dem Objekt was hintzfügen mit
NVECol.AddEntry(Entry)
- wenn das Objekt nicht mehr gebraucht wird löst du es wieder vom Programm scope
Set NVECol = Nothing
- bei einem erneuten Gebrauch muss es wieder initialisert werden mit einem search oder get allentries
have a nice day
-
Hallo und guten Morgen,
@Performance:
dacht ich mir schon, also ist für das Erzeugen einer leeren Collection, mit der man dann auch arbeiten kann, doch notwendig, erst mal irgendwas reinzulesen und dann mit FTSearch oder so die Collection wieder zu leeren. Oder ist es aus Performance-Gründen ;D besser, mit dem GetAllEntriesByKey("nicht vorhandener Wert", False) zu arbeiten? Hast Du da eine Ahnung?
cu
Thomas
-
aus performance Gründen ist es schneller eine collection mit einem set nothing aus dem Speicher zu kicken als mit einer erneuten Suche in der view zu operieren.
cu