Autor Thema: Liste der Agenten sortieren  (Gelesen 4383 mal)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Liste der Agenten sortieren
« am: 12.12.12 - 10:46:27 »
Hallo,

(wie) könnte die Liste der Agenten nach Namen sortiert werden?
Der Code unten bringt die unsortierte Liste.

Gruß
Leo


Sub Initialize
  Dim session As New NotesSession
  Dim db As NotesDatabase
  Set db = session.CurrentDatabase
  agents = db.Agents
  If Not IsEmpty(agents) Then
    Forall agent In agents
      Messagebox(agent.Name) 
    End Forall
  Else
    Messagebox("No agents in database")
  End If
End Sub
nobody is perfect but i'm pretty close 

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Liste der Agenten sortieren
« Antwort #1 am: 12.12.12 - 10:49:54 »
Die musst Du Dir entsprechend Deiner Anforderungen selbst sortieren. NotesDatabase.Agents gibt Dir ein Array sortiert nach der NoteID (Erstellungsdatum) zurück.

Bernhard

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Liste der Agenten sortieren
« Antwort #2 am: 12.12.12 - 10:54:00 »
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...

Code
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
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Liste der Agenten sortieren
« Antwort #3 am: 12.12.12 - 11:06:42 »
NotesDatabase.Agents gibt Dir ein Array sortiert nach der NoteID (Erstellungsdatum) zurück.


Ah so.
Danke, Bernhard.
nobody is perfect but i'm pretty close 

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Liste der Agenten sortieren
« Antwort #4 am: 12.12.12 - 11:07:57 »
...in LotusScript (BubbleSort, QuickSort, etc.),
oder Du nutzt die @Sort- Funktion per evaluate...


Vielen Dank, Torsten !!!
nobody is perfect but i'm pretty close 

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Liste der Agenten sortieren
« Antwort #5 am: 12.12.12 - 11:22:27 »
Tode, eine Anmerkung von mir, bei sowas schrillen bei mir immer die Alarmglocken:
Code
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:
Code
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
« Letzte Änderung: 12.12.12 - 11:32:23 von pram »
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Liste der Agenten sortieren
« Antwort #6 am: 12.12.12 - 11:41:01 »
@Roland: Du hast vollkommen recht... Das ganze fällt auch auf die Schnauze, wenn jemand ein "~" im Agentenname benutzt... Ich wollte auch nur eine grundsätzliche Möglichkeit aufzeigen... Aber auf die Gefahren hätte ich natürlich hinweisen sollen. Die Design- Klasse ist natürlich hierfür auch ganz gut zu benutzen, und die Ansicht für Desing- Elemente verwende ich auch ab und zu, also danke für die Ergänzungen.
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Liste der Agenten sortieren
« Antwort #7 am: 12.12.12 - 13:06:16 »
...eine Anmerkung von mir...
Besser ist es, wenn man ...
je nach Anwendungsfall kann man sogar ...
Vielen Dank für Deine Vorschläge, Roland !
nobody is perfect but i'm pretty close 

Offline Bruce Willis

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.002
  • Geschlecht: Männlich
  • Wer nicht wagt...
Re: Liste der Agenten sortieren
« Antwort #8 am: 12.12.12 - 13:10:00 »
...eine grundsätzliche Möglichkeit ...

Nochmals vielen Dank!!!
Funktioniert perfekt!
Ich musste nur hier zusätzlich Leerzeichen einfügen:

Code
varSortedAgents = Evaluate( {@Sort( @Explode( "}& strAgents &{";"~");[ASCENDING])} )
nobody is perfect but i'm pretty close 

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz