Domino 9 und frühere Versionen > Entwicklung

Collection 2 mal durchlaufen !?

<< < (2/5) > >>

Rob Green:
hm..ist schon irgendwie komisch.

Wenn Du im Debugger die Collcetion Dir anschaust, dann betrachte doch mal, was in der zweiten Schleife die Anzahl angeht. Sollte doch die gleiche sein, oder etwa nicht, weil Du in der ersten Schleife bzw. kurz danach im UIDOC Werte setzt? Ich denke, da ist der Ansatz bzw. "Fehler".

Mach doch mal bitte vor der zweiten Schleife übrigens einen view.refresh. dazu.

ata:
Hallole,

ich habe mir deinen Code angeschaut, und dabei sind mehrere Sachen aufgefallen.


--- Zitat ---Set item = doc.GetFirstItem("Identnummer")
--- Ende Zitat ---


Wozu initialisierst du das Item, du verwendest es nirgends mehr?


--- Zitat ---Set dc = view.GetAllDocumentsByKey(key$, True)  
--- Ende Zitat ---


Eine 2. Initialisierung macht nur dann Sinn, wenn zuvor ein Refresh auf der View war, den du deshalb brauchst, weil sich mit dem neuen Index neue Dokumente erschließen könnten... wenn nicht brauchst du keine weitere Initialisierung, das kostet sonst unnötige Performance...

Dann habe ich gesehen, daß du mit While-Schlaufen arbeitest. Ich habe festgestellt, daß For-Next Schlaufen performanter sind. Die Initialisierung des doc geht dann innerhalb der Schlaufe zu Beginn mit GetNthDocument(index) von statten.

Don Pasquale:
Hi Rob,

was Du nicht wissen kannst, weil Du nicht
weisst wie meine Sicht (InterIdent) aufgebaut ist,
das aktuelle Dokument wird erst mit :

--- Code: ---
Call uidoc.FieldSetText("e4fldIndexiert", "True")

--- Ende Code ---

zu einem Teil der View (InternIdent),
das heisst, die 2 Colection muss einen größer sein, und genau das war sie eben nicht.

Das mein Code nicht gerade performant ist, bitte
ich geflissentlich zu übersehen, vielleicht finde
ich noch eine Windows*-Funktion in Lotus


Windows = altes indianisches Wort für "Der auf die Sanduhr starrt"


Gruß
Don Pasquale



Don Pasquale:
Salut Ata,


--- Zitat --- Wozu initialisierst du das Item, du verwendest es nirgends mehr?

--- Ende Zitat ---


Fehler made by Dreck&Drop.
Wird rausgenommen.


--- Zitat ---
Eine 2. Initialisierung macht nur dann Sinn, wenn zuvor ein Refresh auf der View war, den du deshalb brauchst, weil sich mit dem neuen Index neue Dokumente erschließen könnten... wenn nicht brauchst du keine weitere Initialisierung, das kostet sonst unnötige Performance...

--- Ende Zitat ---


Das war ja das was ich gesucht habe :-)
Die Performance ist in der Tat eher schwach.



--- Zitat ---
Dann habe ich gesehen, daß du mit While-Schlaufen arbeitest. Ich habe festgestellt, daß For-Next Schlaufen performanter sind. Die Initialisierung des doc geht dann innerhalb der Schlaufe zu Beginn mit GetNthDocument(index) von statten.

--- Ende Zitat ---


Da bin ich jetzt etwas verunsichert, in einem anderen Thread wurde ich darauf hingewiesen While Schleifen zu nehmen statt for-next.

Würden sich die Herren Experten mal einigen  :D

Aber, Ich probiere es aus


badische Grüße

Don Pasquale

Rob Green:
dann dürfte es am fehlenden refresh liegen.

Wegen der Perfomance würde ich mir keine Sorgen machen,

- da ich einerseits annehme, daß die Collections sehr klein ist und
- die Verwendung von getnthdocument in Collections die nicht über den View durchlaufen werden (!!!) sehr viel langsamer ist. Notes geht dann die Coll bei jedem Durchlauf von vorne wieder durch bis zum n-ten Doc. Ätzend! Wird über eine Viewcollection gearbeitet, weisen beide Methoden keine Unterschiede auf.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln