Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: dvlad am 26.03.08 - 08:40:23
-
Hallo,
ich habe folgendes Problem.
In einen Berechneten Feld(Liste) wird eine Liste erstellt (z.B.: x;x;x;y;y;z)
Aus dieser Liste möchte ich eine zweite Liste bilden die dann so ausschaut ( x*3;y*2;z*1)
Leider bin ich noch nicht so fit was Formelsprache angeht.
Hier mein Code, wie ich mir das überlegt habe das es funktionieren könnte. Bringt aber leider ein FEHLER, Array-Index außerhalb des gültigen Bereichs.
count := 0;
list1:=Liste;
list2:=@Unique (Liste);
@For(i := 1;i <= @Elements(list2);i := i + 1;
@For(n := 1;n <= @Elements(list1);n := n + 1;
@If(list1[n] = list2; count[n]:=count[n]+1 ; "")) ;
anz:=list2 +"*"+ count[n]);
@SetField ("Listeneu";anz)
Würde mich sehr freuen wenn mir jemand auf die Sprünge helfen könnte.
-
... habe ich das richtig verstanden - du möchtest aus einer Liste mit 6 Werten 3 Listen machen?
Toni
-
Das Berechnete Feld(Liste) variert.
Einmal sind es (z.B.: x;x;x;y;y;z) od. (x;x;y;y) od. (z;y;y).
list1:= Liste => z.B.:( x;x;x;y;y;z) od. (x;x;y;y) od. (z;y;y)
list2:=@Unique(Liste) =>(x;y;z) od. (x;y) od. (z;y)
Ich möchte rausfinden wie oft ein Wert aus der list2 z.b.: "x", in der list1 vorkommt und die Werte dann zusammenketten, so das es verständlich ist das x 3mal in der ersten Liste vorkommt (x*3), in der zweiten Liste müsste dann (x*2) rauskommen, in der dritten Liste kommt x gar nicht vor also leer.
Eine 3 Liste soll erstellt werden in der die Ergebnisse so aussehen:
list3:=(x*3;y*2;z*1) od. (x*2;y*2) od. (z*1;y*2)
-
So:
_RetListe :=
@If(
Liste != "";
@Transform(
Liste;
"x";
x + ("*" + @Text(@Elements(Liste) - @Elements(@Trim(@Replace(Liste;x;"")))))
);
""
);
@Unique(_RetListe)
Andreas
-
Funktioner..., aber nur für einen Wert der list2 ("x").
jetzt muss ich nur noch die anderen Werte der list2 ermitteln.
Die sollen nähmlich auch angezeigt werden.
Ich versuche es mal mit einer @For Schleife davor.
-
Funktioner..., aber nur für einen Wert der list2 ("x").
Äh, nein! "x" ist ein Platzhalter in der @Transform Funktion. Ich hätte diesen auch "Seppel" nennen können.
Probier es doch einfach mal aus.
Andreas
-
:-[ peinlich.
jetzt ist es wieder klar. Ich hatte mir die @Transform - Formel schon mal angeschaut, habe es aber noch nicht so durchschaut.
Ich hatte dein Code ausprobiert aber nur mit einen @Prompt ausgegeben und da zeigt er mir nur den ersten Wert der list2, also wenn die Liste mit "x" anfängt dann x*Anzahl.
Habe jetzt das Ergebnis in einem Feld ausgegeben und siehe da, alles passt.
Vielen Dank Andreas,
Ein Kompliment an das ganze Forum.