Domino 9 und frühere Versionen > ND8: Entwicklung

Evaluate & @Sort & Datum

(1/2) > >>

udo187:
Hallo !

Bitte um einen kurzen Denkanstoss:

Array mit x-Datumswerten, welche ich sortieren möchte.

Wert(0) = 20.12.2012
Wert(1) = 01.01.2014
Wert(2) = 05.10.2013


Ich verwende zum Sortieren gerne das "@Sort" mittels Evaluate.
Und Evaluate arbeitet mit Text -> wenn ich das Array mittels Implode umwandle,
werden die Datumswerte auch als Text sortiert, die Reihenfolge stimmt dann natürlich nicht.


Was mir einfällt:

Möglichkeit 1: Umwandeln der Datumswerte in Zahlen, sortieren und wieder in ein Datum zurückumwandeln
Möglichkeit 2: Werte im Array im Format "[20.12.2012]" hinterlegen - @Sort funktioniert dann auch


Oder ganz was anderes ?

Danke im Voraus für weitere Vorschläge !

Gruss
Udo

Bastel123:
Ich arbeite bei sowas immer mit dem Datumsformat YYYY-MM-DD hh:mm:ss.
Dann kann man schön sortieren und auch wieder zurück in ein datum umwandeln, da man ja einen definierten String hat,

Gruß
Sebastian

pram:

--- Zitat ---Und Evaluate arbeitet mit Text -> wenn ich das Array mittels Implode umwandle,

--- Ende Zitat ---
Warum wandelst du es denn in Text um?

Gruß
Roland

udo187:
Evaluate benötigt als Input einen String, daher zuerst das Implode.
Oder liege ich hier falsch ?

Gruss
Udo

pram:
Hallo Udo,

Vermutlich machst du folgendes:

--- Code: ---s = Implode(arr,|":"|)
v = Evaluate(|@Sort("| + s + |")|)

--- Ende Code ---
Dieser Code ist "böse", da durch eine gezielte Falscheingabe in "arr" Formelcode eingeschleußt werden kann (@Formula-injection, Erklärung siehe hier: http://atnotes.de/index.php/topic,55469.msg357844.html#msg357844)

Außerdem dürfen Formeln nicht länger als 2048 Zeichen sein.

Besser ist:

--- Code: ---tmpDoc = new NotesDocument(db)
tmpDoc.toSort = arr
v = Evaluate("@Sort(toSort)", tmpDoc)

--- Ende Code ---
Dann funktioniert das auch korrekt mit Datumswerten und bis zur 32k-Grenze


Gruß
Roland

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln