Domino 9 und frühere Versionen > ND8: Entwicklung

In Ansicht nach einem Datum größergleich Heute suchen

<< < (2/2)

rhgoe:
Ok, leuchtet unmittelbar ein.
Aber wie kriege ich denn die Document-Collection, die ich als Ergebnis bekomme, dann nach Datum sortiert?

Peter Klett:
M.W. gibt es dafür keine Standardroutine in Notes. Ich mache sowas ungefähr so:

Hole die Collection mittels db.Search
Erstelle eine Liste aller Dokumente, etwa so

Dim dokumente List As NotesDocument
Set doc = col.GetFirstDocument
Do While Not doc Is Nothing
   Set dokumente (doc.UniversalID) = doc
   Set doc = col.GetNextDocument (doc)
Loop

Erstelle eine neue Collection ohne Dokumente

Suche in der Liste das Dokument mit dem kleinsten Eintrag (falls aufsteigend sortiert werden soll), füge es der Collection hinzu und lösche es aus der Liste.
Im Beispiel nehme ich einfach ein Textfeld, musst Du natürlich anpassen

Dim vgl As String
Dim id As String
Do
   vgl = "ZZZZZZZZZ" 'kann auch irgendetwas anderes sein, darf nur nicht in den Werten vorkommen
                                 'und es darf keinen größeren Wert geben
   id = ""
   Forall dokument in dokumente
      If dokument.Feld (0) < vgl Then
         vgl = dokument.Feld (0)
         id = dokument.UniversalID
      End If
   End Forall
   If id = "" Then
      'Kein Dokument mehr in der Liste
      Exit Do
   End If
   'hier dann dokumente (id) der Collection hinzufügen, sowas wie Call sortcol.AddDocument oder so, habe ich gerade nicht im Kopf
   'Anschließend Dokument aus der Liste entfernen
   Erase dokumente (id)
Loop

Soll nur eine Skizze sein ...

Wenn es zuviele Dokumente sind, kannst Du auch die Liste der Dokumente durch eine Liste von Integern ersetzen und holst Dir jeweils das zu verwendende Dokument über den Listtag. Das ist aber nach meinen Erfahrungen erst ab etwa 30.000 Dokumenten notwendig (sicherlich in Abhängigkeit der Größe der Dokumente und dem verfügbaren Arbeitsspeicher).

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln