Domino 9 und frühere Versionen > ND8: Entwicklung
Evaluate & @Sort & Datum
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