Mehrfachauswahl mit Zahlen sortieren usw.
T

Hej hej zusammen,

ich habe folgendes Problem an dem ich schon länger knabbere und vor mir her schiebe.

Ich bin bei meinem Bestellsystem und habe dort eine Mehrfachauswahl mit 24 Auswahlfeldern mit den Zahlen von 1 bis 24. Ich wähle bei jeder Bestellposition eine der Zahlen oder mehrere aus. Wenn ich die Zahlen / das Array sortiere, klappt das nur, wenn nicht mehrfache Auswahlfelder bei einer Bestellposition gewählt wurden und wenn es nicht über 9 geht. Denn wenn ich das sortiere steht die 1, 1, 10, 12, 2, 3, 6 usw.

let BPmax := max(Bestellungspositionen.chosen('In welchem Packstücke verpackt'));
-> bringt mir bei das beschriebene Problem... (kann man das verstehen oder soll ich weiter ausholen?)

Auch lustige Array -> Text -> Array Experimente brachten keine richtige Sortierung rein:
let BP := sort(split(text(concat(Bestellungspositionen.chosen('In welchem Packstücke verpackt'))), ","));

 

Auch kann ich nicht nach den Zahlen suchen mittels IF, denn wenn ich nach der "1" abfragen, dann kommen auch "10" usw wenn ich es mit LIKE mache... Versteh ich ja auch an sich, aber wenn ich dann genau abfragen mit = "1" und es gibt Bestellpositionen mit mehreren Auswahlfeldern ("1" und "3" zB), dann verfällt diese Position einfach wie hier:

if cnt(Bestellungspositionen['In welchem Packstücke verpackt' = text("1")]) > 10 then
'Name(n) der Pflanze(n) auf dem 1. Etikett' := "Plantae"
else
'Name(n) der Pflanze(n) auf dem 1. Etikett' := concat(Bestellungspositionen['In welchem Packstücke verpackt' = text("1")].Produkte.Name)
end;

Wo liegt mein Fehler? :-/

Vielen lieben Dank für eure Hilfe im Voraus!! Danke!!!
Tim

 

Ninox Profile

Hallo Tim,

chosen gibt immer einen String zurück. Wenn deine Auswahlmöglichkeiten auch den internen IDs des MFAF entsprechen, kannst du mit numbers('In welchem Packstücke verpackt') arbeiten. 

Leo

T

Lieber Leo,

auch hier stehe ich nach wie vor auf dem Schlauch. Ich bekomme zB. auf diesem Wege:

alert(cnt(Bestellungspositionen['In welchem Packstücke verpackt' = 4]));

Eine 2 ausgespuckt, auch wenn es nur eine Position mit der 4 gibt.

Leider funktioniert das wie oben beschrieben einfach nicht... :(

 

Liebe Grüße
Tim

Ninox Profile

Hallo Tim,

ist ein bisschen komplizierter:

---

alert(cnt(Bestellungspositionen[contains(concat(numbers('In welchem Packstücke verpackt' )),"4")]))

---

Leo

T

Vielen lieben Dank Leo,

das ist sehr gut und funktionier fast. Es bringt aber wie bei anderen Varianten das Problem noch mit sich, dass wenn man nach "1" sucht, die "11" mitgezählt wird. :/

Und wie ich dann auf die verknüpften Namen komme interessiert mich auch (ich habe jetzt gerade nur kurz probiert).
Hier noch unsere alte Variante: concat(Bestellungspositionen['In welchem Packstücke verpackt' = "1"].Produkte.Name

Liebe Grüße

Ninox Profile

Vielleicht so:

---

concat(Bestellungspositionen[
let mARR:=for i in numbers('In welchem Packstücke verpackt' ) do
format(i,"000")
end;
contains(concat(myARR,"001"))].Produkte.Name)

---

so solte es bis 999 Positionen gesichert sein

Leo

Ninox Profile

ups,

---

concat(Bestellungspositionen[
let mARR:=for i in numbers('In welchem Packstücke verpackt' ) do
format(i,"000")
end;
contains(concat(myARR),"001")].Produkte.Name)

---

T

Oh man, perfekt!!

Über diesen Weg funktioniert alles :)

Liebsten Dank!

Antworten