Domino 9 und frühere Versionen > ND6: Entwicklung
Database.UnprocessedDocuments Reihenfolge der Dokumente in der View
Tode:
und warum loopst Du manuell und suchst Dir nicht einfach das Dokument über dc.GetDocument( ViewEntry ) ....
je nachdem in welchem Verhältnis die Anzahl der Selektierten Dokumente zur Anzahl der Dokumente in der View steht, könnte es noch performanter sein, wenn Du die UnprocessedDocuments durchläufst, dann aus den ViewEntries den entsprechenden Eintrag per GetEntry( ) bekommst, und Dir dann eine Liste aufbaust. Diese Liste sortierst Du mit hilfe eines Tricks und durchläufst dann diese Liste...
Code (einfach so getippt, nur als Konzept gedacht, VEC ist Deine ViewEntryCollection, dc die Unprocesseddocuments):
Dim docList list as NotesDocument
dim tmpEntry as NotesViewEntry
Dim sortIndizes as String
Dim tmpPos as String
Dim sortedPos as Variant
Dim tmpDoc as NotesDocument
Forall lDoc in dc
set tmpEntry = VEC.GetEntry( lDoc )
tmpPos = tmpEntry.GetPosition( "." )
docList( tmpPos ) = lDoc
if sortIndizes = "" then
sortIndizes = |@Sort( "| & tmpPos & |"|
else
sortIndizes = sortIndizes & |:"| & tmpPos & |"|
end if
End Forall
sortIndizes = sortIndizes & | )|
sortedPos = Evaluate( sortIndizes )
Forall pos in sortedPos
Set tmpDoc = docList( pos )
... hier Deine Aktionen mit dem Dok...
Next
nur so als Denkanstoss... der erste Tipp bringt auf jeden Fall für Dich einiges an Performance, der zweite KANN Performance bringen, wenn z.B. 10 Dokumente selektiert sind und 4000 Dokumente in der View... Dann durchläufst Du eine 10er Schleife 2 mal anstatt einer 4000er Schleife 1 mal....
HTH
Tode
EDIT: Achtung: In einer Ansicht mit Kategorien liefert GetPosition solche Werte (schon mit sort sortiert):
1.1.1
10.1.1
2.1.1
da müsstest Du im Script das ganze noch "normieren" (Split nach "." , auf 5 Stellen normieren, dann wieder imploden), damit das so aussieht (wiederum nach sort):
00001.00001.00001
00002.00001.00001
00010.00001.00001
Untitled:
Super! ;D
Dass das GetEntry auch mit Dokumenten als Parameter funktioniert hab' ich nicht gewusst.
Ich denke, ich werde deine zwei Punkte noch einbauen. Für deine Methode mit der Sortierung werde ich eine Weiche programmieren, die, wenn die Hälfte aller Docs und weniger markiert sind deine Variante anwendet und sonst meine.
Herzlichen Dank Tode!
Grüsse
Moritz
Untitled:
--- Zitat ---und warum loopst Du manuell und suchst Dir nicht einfach das Dokument über dc.GetDocument( ViewEntry ) ....
--- Ende Zitat ---
NA TOLL! Notes verliert, wenn ich das Dokument so hole, die ParentView und genau die brauche ich aber dringend um weiterzuarbeiten.
Mit ".GetNextDocument()" funktionierts, mit ".GetDocument()" gehts nicht. >:( >:( >:(
UARGH! Ich schreib gleich eine Briefbombe an IBM.
Was für ein verkorktes Konzept lässt sowas überhaupt zu??
Moritz
LN4ever:
Du holst dir ein Dokument eus einer Dokumentenliste. Woher soll das Dokument denn wissen, daß es zur Listenbildung aus einer View geholt wurde. Genaugenommen ist es auch gar nicht aus einer View geholt worden, sondern aus einer ViewEntryCollection bzw. aus dem Refernzobjekt eines einzelnen Viewentries.
Eine Viewentrycollection ist eine Sammlung sortierter Zeileneinträge einer Ansicht, deren einzelne Zeilen (die Viewentries) die Möglichkeit haben, das für die Anzeige verantwortliche Dokument als NotesDocument zu referenzieren.
Je nach Ansicht kannst du fünfmal auf das gleiche Dokument stoßen.
Merke: eine Viewentrycollection bildet sich zwar aus einer view, ist aber selbst weder view, noch Documentcollection.
Deshalb verliert das Dokument nicht den Parentview, sondern es hat diesen Bezug bei seiner Bildung überhaupt nicht besessen.
Wofür brauchst du denn noch die View an sich ?
Untitled:
Moment. Ich bin mit jetzt nicht sicher, ob ich das verstanden habe:
--- Zitat ---Du holst dir ein Dokument eus einer Dokumentenliste. Woher soll das Dokument denn wissen, daß es zur Listenbildung aus einer View geholt wurde.
--- Ende Zitat ---
Das weiss ich auch nicht, ich habe aber festgestellt, dass wenn ich die Dokumentliste über "UnprocessedDocuments" hole, die Dokumente offensichtlich eine ParentView besitzen.
--- Zitat ---Genaugenommen ist es auch gar nicht aus einer View geholt worden, sondern aus einer ViewEntryCollection bzw. aus dem Refernzobjekt eines einzelnen Viewentries.
--- Ende Zitat ---
Indirekt wurde das Dokument aber eben doch aus einer View geholt, da "UnprocessedDocuments" von einer View stammt (soweit mein Verständnis).
Meiner Meinung nach, hat doch jedes Dokument in meiner DocumentCollection eine Referenz auf die ParentView, oder? Sonst könnte ich ja nicht darauf zugreifen (mit "GetNextDocument" funktionierts ja).
Warum spielt es nun eine Rolle, WIE ich an das Dokument aus der Collection komme, um die ParentView auszulesen?
--- Zitat ---Wofür brauchst du denn noch die View an sich ?
--- Ende Zitat ---
Eigentlich brauche ich nicht die View, sondern "ColumnValues". Diese beiden Attribute stehen und fallen aber gleichzeitig.
Bitte um Korrektur, falls ich da was falsch verstanden habe.
Grüsse
Moritz
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln