Entweder Du suchst Dir einen Sort- Algorithmus Deiner Wahl aus und implementierst ihn in LotusScript (BubbleSort, QuickSort, etc.),
oder Du nutzt die @Sort- Funktion per evaluate...
Dim session As New NotesSession
Dim db As NotesDatabase
Dim strAgents as String
DIm varSortedAgents as Variant
Set db = session.CurrentDatabase
agents = db.Agents
If Not IsEmpty(agents) Then
Forall agent In agents
If strAgents = "" then
strAgents = agent.Name
else
strAGents = strAgents + "~" + agent.Name
End If
End Forall
varSortedAgents = Evaluate( {@Sort( @Explode( "}&strAgents&{";"~");[ASCENDING])} )
'- hier tun was immer Du mit Deinen sortierten Agenten machen willst
Else
Messagebox("No agents in database")
End If
Tode, eine Anmerkung von mir, bei sowas schrillen bei mir immer die Alarmglocken:
Evaluate( {@Sort( @Explode( "}&strAgents&{";"~");[ASCENDING])} )
Spätestens wenn im Agentname ein " vorkommt, kracht es.
(außerdem sind Code-Injections möglich. z.B. wenn der Agentname irgendwie so
" + @SetDocField(....) + "
lauten würde, dies ist zwar hier unwahrscheinlich, spätestens bei Werten die der User eingeben kann, sollte man aber vorsichtig sein.)
Die Länge der Formel ist weiterhin auf ~2K beschränkt
Besser ist es, wenn man die Parameter über ein Dokument rein reicht:
doc.agents = strAgents
Evaluate( {@Sort( @Explode( "agents";"~");[ASCENDING])}, doc )
Die Formel kann dann sogar zur Compilezeit überprüft werden.
Gruß
Roland
/edit: je nach Anwendungsfall kann man sogar folgendes machen: http://www-10.lotus.com/ldd/ddwiki.nsf/dx/view-of-design-elements.htm (FormulaClass kann man seit 8.5.1. bequem über den DXL-Editor anpassen)
Die Ansicht muss natürlich in der Anwendung mit den Agenten erstellt werden. Wir verwenden sowas z.B. zur Auswahl von Teilmasken etc. Die Dropdown-Felder werden dabei über einen @DBlookup/@DBColumn befüllt
...eine grundsätzliche Möglichkeit ...
Nochmals vielen Dank!!!
Funktioniert perfekt!
Ich musste nur hier zusätzlich Leerzeichen einfügen:
varSortedAgents = Evaluate( {@Sort( @Explode( "}& strAgents &{";"~");[ASCENDING])} )