0

Mehrfachauswahl mit Zahlen sortieren usw.

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

7 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • Tim
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Tim,

    ist ein bisschen komplizierter:

    ---

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

    ---

    Leo

    • Tim
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    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)

    ---

    • Tim
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Oh man, perfekt!!

    Über diesen Weg funktioniert alles :)

    Liebsten Dank!

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 7Antworten
  • 1088Ansichten