0

Summe in Abhängigkeit von Mehrfachauswahlfeld und Datum

Hallo Community, ich nutze seit 3Wochen Ninox und hab die Vorlage "Fuhrpark" umgebastelt. Soweit zufrieden, nur komme ich nicht auf die Lösung dieses Problems: [Alle relevanten Daten werden in der Tabelle 'Fahrtenbuch' abgelegt. (Datum =ist ein "Datumsfeld" , gefahrene KM = ist ein "Zahlfeld" , etc.) ]

Auf dem Dashboard (siehe Bild 1) möchte ich per Mehrfachfelder die KM gefiltert nach Jahr(en) und Monat und/oder Monaten berechnen. Also Bsp. entweder nur Januar/Februar oder Januar und Februar etc... zusammen. Dazu die Formel  (ohne Fehlermeldg) in "Auswahlfilter" siehe Bild 2. Dennoch wird am Ende 0 berechnet. Was könnte ich nun beim basteln der Formel falsch geschrieben haben? Komme mit diesem select , where, etc. doch nicht so richtig klar. Oder darf in Mehrfachauswahl nur 1choise gewählt werden und geht nicht mit 2 oder mehr?

Für eventuelle Hilfe /Lösungen  wäre ich sehr dankbar,

Gruß Alf.

10 Antworten

null
    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Alf. Ich habe das jetzt nicht nachgestellt, aber vielleicht reichen ein paar Anregungen. month(Datum) gibt die Monatszahl wieder, monthName(Datum) den Monatsnamen. Und dann so wie unten. Mirko

    let myYear := number(JAHRE);
    let myMon := chosen(MONATE);
    sum(for i in myMon do
    select Fahrtenbuch[monthName(DATUM) = i and year(DATUM) = myYear].'Gefahrende KM' end)
    
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Alf, wenn die Monate in der richtigen Reihenfolge eingegeben wurden (Jan = 1, Feb = 2 usw.) und im Auswahlfeld 'Jahr' nur die Ziffern der Jahreszahl stehen, dann würde ich es mal so versuchen:

    let myY := number(text(JAHRE));
    let myM := numbers(MONATE);
    let myArray := (select Fahrtenbuch where year(Datum) = myY);
    sum(for i in myM do
       myArray[month(Datum) = i].'Gesamt Km'
    end)
    
    • OnLimit_Alf
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Wow, schnelle Reaktion. Danke Euch Beiden!

    @planox  : Ja, im Mehrfachfeld sind in  Choice die Monate als "WORTE" der Reihe nach von 1(Januar) bis 12(Dezember)  hinterlegt. Und ja, im Auswahlfeld "Jahre" als Ziffer. 

    Aber, sowohl in Deiner Variante, als auch in der von @Mirko bleibt das Ergebnis hartnäckig "Null".

    Ich habe für die Monate als Alternative statt ein Mehrfachfeld ein Auswahlfeld eingesetzt (klar, dann nur ein  Monat zur Auswahl) , aber auch da tut sich überhaupt nix.(wollte prüfen, ob es an dem Mehrfachfeld liegt)

    Ich habe den zweiten Filter "Jahre" weg gelassen, tut sich aber immer noch nix. Und ich habe mit chosen bzw. number(s) und auch month / monthName , etc hin und her probiert =  0

    Als ich noch nicht per Auswahlfelder gefiltert habe, lief das Ganze mit:

    let me := this;
    sum((select Fahrtenbuch where month(Datum)= me.month(Datum) and year = me.year(Datum)).'Gesamt Km'
    

    Naja,  geht's halt eben nicht. Danke.

    • Josef_Koenig
    • vor 1 Jahr
    • Gemeldet - anzeigen

     Aus völlig unerfindlichen Gründen erlaubt das Auswahlfeld nur AND - Verknüpfungen. Wenn Du also bei den Monaten JANUAR FEBRUAR eingibst, wird nach jenen Datensätzen gesucht, die sowohl im Januar als auch im Februar angefallen sind - also vermutlich 0 Datensätze. Die Boole'sche-Verknüpfung, die Du möchtest, wäre eine OR - Verknüpfung, also alle Datensätze, die entweder im JANUAR oder im Februar angefallen sind. Und genau dieses Feature wird hier nicht angeboten. Ich hatte das schon mal angemahnt, bin aber auf taube Ohren gestoßen, obwohl genau das sicher viele User benötigen würden. 

      • mirko3
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Josef Koenig Hallo Joseph. Was Du meinst, ist die Funktion in der Tabellenansicht. Da finde ich die Begrenzung auf AND ebenfalls einschränkend. Hier ist aber die Benutzung im Script gemeint, da geht jede Kombination, z.B. auch für Ansichten.  Das ist hier mal demonstriert. Gruß Mirko

      https://forum.ninox.de/t/60h0rxg/multi-dmulti-array

    • OnLimit_Alf
    • vor 1 Jahr
    • Gemeldet - anzeigen

    @josef_koenig: ja danke. Nach meiner  Vorstellung  sollte das schon sowohl als AND als auch OR funktionieren, da ja jeden Monat etwas eingetragen wird.  Das heißt, "Hallo Formelfeld, zeige mir die KM nur von Januar // zeige mir die KM von Januar und Februar zusammen // ..etc" (keine Ahnung ob man dann Bsp von März bis September angeben könnte) 

    Naja  bin nun wieder auf meine alte Methode umgestiegen, statt Auswahlfelder ein Datumsfeld genommen und in dem Formelfeld siehe  oben (let me := this  etc...) ABER aufpassen Leute, wenn man nicht exakt und präzise die Klammerung setzt, passiert unter Umständen nix. So fehlt z. Bsp. in meiner alten Codezeile hinter 'Gesamt Km'  noch eine schließende Klammer, sonst bleibt das Formelfeld leer (obwohl im Editor kein Fehler angezeigt wird) 

    Also könnten obige Vorschläge gehen, fehlt aber irgendwo noch ne billige Klammer 🤔

    • mirko3
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Auch wenn es schon erledigt ist. So geht es in einer nachgestellten DB. Mirko

    let myYear := number(text(JAHR));
    let myMon := chosen(MONATE);
    let result := for i in myMon do
            first((select Fahrtenbuch)[monthName(DATUM) = i and year(DATUM) = myYear].'Gesamt Km')
        end;
    sum(result)
    • OnLimit_Alf
    • vor 1 Jahr
    • Gemeldet - anzeigen

    @Mirko3 :  Hallo Mirko, Du bist ein großer Zauberer!  Danke für das nachstellen meines Problemes und dank Dir funktioniert es nun tatsächlich  😍😍  , allerdings mit einer minimal winzigen Änderung. Denn ich hatte mich gewundert wieso als Ergebnis bei Auswahlfilter für Januar nur 96km angezeigt wurde. Diesen einen Eintrag fand ich dann im Fahrtenbuch für den 4.1.23  // Also hab ich probeweise im Code Zeile 4 aus "first((select....etc" ein "last((select....etc" gemacht. Als Ergebnis kam 460km und entsprach im Fahrtenbuch dem einen Eintrag vom 28.1.23 //  Hmmm,  um aber den ganzen Monat in Summe zu haben (6782km)  und jetzt kommts: muß man in Code-Zeile 4   "sum((select........etc" schreiben, alles übrige so wie Du geschrieben hast.

    Jetzt kann ich beliebig im Filter wählen, entweder nur Januar oder  aber Februar und März zusammen.......etc

    Daaaannke!!!!!

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      OnLimit_Alf Stimmt, das zweite "sum" fehlte auch in meinem Code, sorry. Sieht man halt nicht sofort, wenn man's nicht ausprobiert. Prima, dass du es selbst herausgefunden hast! 👍

      Hier nur der Vollständigkeit halber noch mal der vollständige, korrekte Code: 

      let myY := number(text(Jahr));
      let myM := numbers(Monate);
      let myArray := (select Fahrtenbuch where year(Datum) = myY);
      sum(for i in myM do
         sum(myArray[month(Datum) = i].'Gesamt km')
      end)
      
    • OnLimit_Alf
    • vor 1 Jahr
    • Gemeldet - anzeigen

    hab noch schnell Beweisbild 3 angehängt, sofort soll es sein......

    Ganz links oben alle Km  von 2023 bis jetzt, ganz rechts oben per Mehrfachfilter für Januar/Februar und darunter momentan im März.

    Danke , Allen Beteiligten für die schnelle Hilfe.

    Und bis vielleicht mal wieder.......

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 10Antworten
  • 96Ansichten
  • 4 Folge bereits