Domino 9 und frühere Versionen > ND8: Entwicklung
ArrayUnique
mikesmurph:
Hallo zusammen,
ich steh mir grad wohl selbst im Weg...
Ich habe ein Dokumentenfeld PROF_Mat_EW_Wert vom Typ Text bei dem Mehrfachwerte zugelassen sind, und bei den Optionen für Mehrfachwerte folgendes drin steht:
Werte trenne bei Eingabe von : Komma, Semikolon, Neue Zeile
Getrennte Werte anzeigen mit: Neue Zeile
Der Inhalt des Feldes ist z.B.
Unwahrscheinlich
Unwahrscheinlich
Möglich
Möglich
Unwahrscheinlich
Möglich
Wahrscheinlich
Wahrscheinlich
Möglich
Wahrscheinlich
Wahrscheinlich
Sehr Wahrscheinlich
Möglich
Wahrscheinlich
Sehr Wahrscheinlich
Sehr Wahrscheinlich
Ich möchte jetzt aus den Werten eine Liste erstellen, in der alle Werte nur einmal auftauchen, also Duplikate entfernt sind.
Dazu nehme ich z.B. die folgende Funktion:
--- Code: ---sz1=Arrayunique(Split(uidoc.FieldGetText("PROF_Mat_EW_Wert"),Chr(13)))
--- Ende Code ---
Das Funzt auch soweit, nur wird der erste Eintrag immer doppelt angezeigt!
Hab das auch schon über eine Stringliste mit folgendem Code versucht:
--- Code: --- Forall sx In sz1
sz(sx)=sx
End Forall
--- Ende Code ---
Hat aber auch nichts gebracht. Irgendwie zweifle ich grad an mir selber.
Vielleicht kann mir jemand auf die Schnelle weiterhelfen.
vielen Dank und Grüße aus dem verschneiten Schwarzwald.
Michael
umi:
wie wärs über ein Evaluate ?
dim feldwert as string
dim liste as variant
feldwert = uidoc.fieldgetText("Prof_mat_ew_wert")
liste = evaluate({@Sort(@unique(@explode("} & feldwert & {";@newLine)));})
if isarray(liste) then
end if
pram:
OT, aber weil ich es grad sehe:
--- Code: ---sz1=Arrayunique(Split(uidoc.FieldGetText("PROF_Mat_EW_Wert"),Chr(13)))
--- Ende Code ---
Split sollte man nie als Argument in einer Funktion verwenden, sondern immer erst einem Variant zuweisen
https://www-304.ibm.com/support/docview.wss?uid=swg21169330
geht zwar meistens gut, aber manchmal kracht es.
Neben Split gehören da alle nativen Arrayfunktionen dazu (Replace/split/fulltrim/arrayunique)
Gruß
Roland
Tode:
Ausserdem würde ich NICHT das Frontend- Dokument nehmen (evtl. geht das mit dem Chr(13) da schief), sondern
uidoc.Document.GetItemValue( "PROF_Mat_EW_Wert" ), dann kriegst Du schon ein sauberes Array, mit dem Du weiterarbeiten kannst, ohne Split...
Fineas:
einfach und effizient:
FIELD DEINFELDNAME := @Unique( DEINFELDNAME);
oder
DEINEVARIABLE := @Unique( DEINFELDNAME);
Wenn es in LS ausgewertet werden soll, dann einfach ein zweites (verstecktes) Feld mit @unique auf das erste Feld und jenes dann auswerten. Auf diese Weise hat man die Basisdaten und die aufgeräumten Daten im Griff.
Gruß, Heiko
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln