1

Eine Frage der Sortierung: Wie kann ich nach 2 Kriterien die Listen sortieren?

Ich habe da noch ein Luxusproblemchen. Vielleicht weiss ja einer die Lösung.

Ich sortiere meine Datensätze so, dass ich meine noch zu erledigenden Jobs immer ganz oben in der Liste stehen habe. Auf dem Screenshot sind das die Datensätze mit dem roten Kästchen. Soweit so gut. Leider sind die dann aber noch nicht in der Reihenfolge der Termine angeordnet. Es geht zwar so aber irgendwie störts mich noch.

 

Irgendwie habe ich noch nicht gepeilt wie ich das anstellen könnte, dass die "roten" Datensätze oben stehen aber auch in der korrekten Terminfolge. Also der nächste zu erledigende Job ganz oben, dann der nächste usw.

7 Antworten

null
    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Achso: Nur nach Termin sortiert würde die Sortierung der Farbkästchen wieder durcheinander bringen. Da fehlen noch gelbe Kästchen, wenn nämlich ein Job an dem Tag erledigt wurde. Der würde dann da immer zwischen den Roten mit herumschwirren.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Fakt ist  - Ninox kann nur nach eine Spalte sortieren. Man kann eine zusätzliche nummeriche Spalte einfügen und danach sortieren. Die Formel dafür ist ein bisschen kompliziert es es sind eigentlich zu viele unbekannten um diese hier richtig darzustellen. Ich nehme jetzt an dass die Spalte ein Auswahlfeld ist und die rote Auswahl hat ID-1. So kann man sagen: ich soriere S aufsteigend und Termin absteigend. Dann wäre die Formel für die Funktionsspalte etwa so:

    ---

    let my := this;
    cnt((select 'DEINE TABELLE')[number(S) < my.number(S)]) + 1 + cnt((select 'DEINE TABELLE')[number(S) = my.number(S) and start(Termin) > my.start(Termin)])

    ---

    wenn beide Spalten absteigendsortiert werden sollten, dann:

    ---

    let my := this;
    cnt((select 'DEINE TABELLE')[number(S) > my.number(S)]) + 1 + cnt((select 'DEINE TABELLE')[number(S) = my.number(S) and start(Termin) > my.start(Termin)]

    ---

    Wenn die Felder anders heißen als die Spaltennamen, musst du natürlich die Namen von Felder nehmen.

     

    Leo

    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Wow Leo! :-) Danke

    Das funktioniert. Jedenfalls schon teilweise. Die offenen Jobs werden mit deiner ersten Formel nun in korrekter Reihenfolge angezeigt. Wenn sie erledigt wurden rutschen sie nach unten, bleiben aber im oberen Bereich, auch das ist so gewollt und korrekt. Sind sie "zurückgemeldet" rutschen sie noch einen weiter runter. Auch so der Plan.

     

    Nun kommt noch der Schönheitsfehler: Die "Rechnung versandt" und "ABGESCHLOSSEN" Einträge werden nun verkehrt aufgelistet. Da sind nun die ältesten oben usw. Vielleicht kann man da noch die KW Woche mit einbeziehen irgendwie?

     

    Das Auswahlfeld (S = Auftragsstatus) ist übrigens wie folgt nummeriert:

     

    Es ist schade, dass Ninox nicht mit mehreren Spalten sortieren kann. Ich hatte vorher eine einfachere Datenbankanwendung, die konnte nicht so viel wie Ninox aber das Spalten sortieren war dort einfacher weil man die Sortierreihenfolge vorgeben konnte. Erst Spalte A nach diesem Kriterium, dann Spalte B nach dem Kriterium.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Pyromixer

    Wenn ich richtig interpretiere, möchtest du doch, dass die jüngsten Termine oben stehen (in dem ersten Bild standen die Termine nämlich absteigend). Dann wäre die Formel:

    ---

    let my := this;
    cnt((select 'DEINE TABELLE')[number(S) < my.number(S)]) + 1 + cnt((select 'DEINE TABELLE')[number(S) = my.number(S) and start(Termin) < my.start(Termin)])

    ---

    Theorethisch kann mann alle Felder in die Sortierung einbeziehen, ich habe mal hier vier Felder Sortierung für Kleider und Konfektionen gepostet. Die KW einzubeziehen finde ich aber nicht sonnfoll, weil man dann auch die Jahre berücksichtigen muss. Und die KW ist sowiese ein Produkt von Termin.

    Die Sortierung wäre dann aber aufsteigend

     

    Leo

    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ja die jüngsten Termine oben. Das ist korrekt. Aber nur bei den S (Auftragsstatus) Situationen 1, 2, und 3 ist es nun so in Ordnung. Das funktioniert auch nun.

     

    Ab Status 4 aber sind sie mit dem älteren Datum wieder oben. Wobei die Statusanzeige natürlich wichtiger ist als die Terminreihenfolge. Diese bunten Bildchen müssen generell immer oben sein. Erst ab Status 6 (ABGESCHLOSSEN) müssen diese nicht mehr ganz oben sein, da werden sie als Indikator unwichtig.

     

    Es ist schon kompliziert...

    Ich glaube es hat mit dem heutigen Datum zu tun was es so kompliziert macht. 

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ich verstehe leider nicht ganz. Das zweite Bild zeigt eigenntlich, dass alle Termine aufsteigend sortiert sind (05.03.2019 09:00 sollte eigentlich unter dem 05.03.2019 15:00 liegen). Wenn die Termine ab Status 4 andersrum sortiert werden sollten, dann ist die Formel für die Nummerierung:

    ---

    let my := this;
    cnt((select 'DEINE TABELLE')[number(S) < my.number(S)]) + 1 + if number(S) < 4 then
    cnt((select 'DEINE TABELLE')[number(S) = my.number(S) and start(Termin) < my.start(Termin)])
    else
    cnt((select 'DEINE TABELLE')[number(S) = my.number(S) and start(Termin) > my.start(Termin)])
    end

    ---

    Leo

    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ich weiss, dass es verwirrend ist. Liegt aber wohl daran, dass ich es nicht richtig erklären kann was erreicht werden soll. Es ist auch nicht ganz einfach.

    Aber: Mal wieder meinen größten Respekt Leo! Es funktioniert nun wie gewünscht:

     

    Genauso war es gedacht. Unter mir wandern die erledigten Dinge von mir weg und je nach Status bleiben sie aber noch im Sichtfeld und oberhalb in der Reihenfolge wie ich sie noch angehen muss. Immer ganz oben auf Platz 1 die Sache die aktuell als Nächstes zu erledigen ist.

     

    Ich wusste nicht wie ich es in Worte fassen sollte was ich erreichen möchte aber Du hast es trotzdem verstanden. Sensationell. Vielen herzlichen Dank :-)))

Content aside

  • 1 „Gefällt mir“ Klicks
  • vor 5 JahrenZuletzt aktiv
  • 7Antworten
  • 2383Ansichten
  • 1 Folge bereits