0

Umsätze eines Jahres summieren und mit Vorjahren vergleichen - Darstellung im Diagramm

Hallo zusammen,

es ist schon wieder ziemlich lange her, dass ich etwas zusätzliches in meine Datenbanken einbauen musste. Deswegen bin ich etwas raus, was den Umgang mit solchen Dingen angeht.

Ich habe eine Tabelle Rechnung, die u.a. das Feld Nettogesamt der einzelnen Rechnung ermittelt 

sum(Rechnungspositionen.'Netto Gesamt Position')

Darüber hinaus das Feld Zahldatum, also wann der Betrag auf dem Konto eingegangen ist. Daraus habe ich bereits sowohl das Jahr wie auch den Monat des Zahldatums ('Monat Zahlung' + 'Jahr Zahlung') in der Tabelle ergänzt.

Ich möchte jetzt die Werte eines jeden Jahres aufsummieren und dann in einem Diagramm darstellen, um die Umsatzentwicklung der Jahre zu vergleichen.

Jetzt wollte ich ein zusätzliches Feld Aufsummierung hinzufügen, das die Werte eines Jahres aufsummiert.

Hier muss die Bedingung wahrscheinlich lauten, dass das Feld  'Jahr Zahlung' gleich ist. Danach muss der Wert aus Nettogesamt für 'Monat Zahlung' = 1 genommen werden.

Dazu soll dann Nettogesamt für 'Monat Zahlung' = 2 addiert werden usw. bis das neue Jahr beginnt.

So soll das dann aussehen

 

So viel zur Theorie - ich scheitere nur leider an der Umsetzung in der Praxis.

Und dann stellt sich noch die Frage, ob das der richtige Ansatz ist, um mir diese Zahlen dann auch in einem Diagramm gegenüber zu stellen, also ein Diagramm nur mit den Monaten 1-12

Wäre klasse, wenn mir dabei jemand unter die Arme greifen könnte.

Vielen Dank schon einmal für die Unterstützung

Markus

9 Antworten

null
    • Markus.1
    • vor 10 Tagen
    • Gemeldet - anzeigen

    Hm, der Screenshot ist nicht dabei gewesen

    • pma_mgmt
    • vor 8 Tagen
    • Gemeldet - anzeigen

    Folgendes ist eine Lösung, die jedoch ggf. bei vielen Rechnungen (aufgrund des selects) performanceschmälernd wirkt.

    Auf Ebene der "Rechnungen" einfügen:

    Formel 1: Nettogesamt des Monats

    let me:=this;
    sum((select Rechnungspositionen where year(Rechnungsdatum)=year(me.Rechnungsdatum) and month(Rechnungsdatum)=month(me.Rechnungsdatum)).'Netto Gesamt Position')
    

    Formel 2: Nettogesamt des Jahres

    let me:=this;
    sum((select Rechnungspositionen where year(Rechnungsdatum)=year(me.Rechnungsdatum)).'Netto Gesamt Position')
    

    Dann kannst du ein Diagramm erstellen, das 

    select Rechnungen

    wählt und hierbei als erstes Element (Gruppiert anwählen!)

    format(Zahldatum, "YYYY-MM")

    und als zweites Element (Durchschnitt anwählen)

    Nettogesamt_Monat

    enthält. Bzw. das selbe noch für das Jahr.

    Wenn du die Performance steigern möchtest, dann empfehle ich, das Nettogesamt des Jahres und des Monats zu berechnen, wenn eine Rechnung hinzugefügt wird, bzw. wenn das Zahldatum geändert wird und dies direkt in zwei Zahlenfelder in die jeweiligen Zellen zu schreiben. Und zwar mit als "Trigger nach Änderung" in das Feld "Zahldatum"

    let me:=this;
    
    let auswahl:=select Rechnungen where year(Zahldatum)=year(me.Zahldatum)
    let auswahlmonat:=auswahl[month(Zahldatum)=month(me.Zahldatum)]
    do as deferred
    for i in Auswahl do
    i.Nettogesamt_Jahr:=sum(auswahl.Netto)
    i.Nettogesamt_Monat:=sum(auswahlmonat.Netto)
    end

    Hierbei empfehle ich "do as deferred", da sonst der Mitarbeiter im Browser unter Umständen sehr lange warten muss, bis die Benutzeroberfläche reagiert. Do as deferred sagt Ninox sinngemäß "aktualisiere die Werte dann, wenn du Zeit hast, aber lass mich bis dahin weiterarbeiten".

     

    Ich hoffe, das hilft. Wenn nicht, lösen wir das gerne gemeinsam. 

    Beste Grüße

    Peter

    • Markus.1
    • vor 8 Tagen
    • Gemeldet - anzeigen

    Hallo Peter,

    erstmal besten Dank für deine Mühe und die Vorschläge:

    Nettogesamt habe ich noch folgendermaßen abändern müssen, damit der Fehler weg ging

    let me := this;
    sum((select Rechnungspositionen
            where year(Rechnung.Rechnungsdatum) = year(me.Rechnungsdatum) and
            month(Rechnung.Rechnungsdatum) = month(me.Rechnungsdatum)).'Netto Gesamt Position')
    

    Und Nettogesamt des Jahres auf das Zahldatum bezogen, da dieses immer im neuen Monat/Jahr liegt

    let me := this;
    sum((select Rechnungspositionen where year(Rechnung.Zahldatum) = year(me.Zahldatum)).'Netto Gesamt Position')
    

    Damit passt dann auch immer das Jahr.

    Wegen der Formel für Nettogesamt des Jahres wird in in der Tabellenansicht nur der letzte/höchste Wert in den Monaten 1-12 angegeben. 

    Wie kann ich es denn realisieren, dass die Werte für Nettogesamt des Jahres Monat für Monat um den Wert von Nettogesamt des Monats bei gefülltem Zahldatum addiert werden (so wie im Screenshot)?

    Viele Grüße

    Markus

      • pma_mgmt
      • vor 8 Tagen
      • Gemeldet - anzeigen

       hier eine Idee wie es sein könnte basierend auf dem was ich von deinen Angaben verstanden habe. 

      let me := this;
      sum((select Rechnungspositionen where year(Rechnung.Zahldatum) = year(me.Zahldatum) and month(Rechnung.Zahldatum)<=month(me.Zahldatum)).'Netto Gesamt Position')
      
      
      • Markus.1
      • vor 7 Tagen
      • Gemeldet - anzeigen

       Hallo Peter, dank für die Anpassung, so bekomme ich die Kumulierung von Nettogesamt des Jahres hin.
      Allerdings hat sich da noch ein kleiner Fehler eingeschlichen bei 3 kleinen Rechnungen, weil - anders als normal - noch eine weitere Rechnung in dem Monat fakturiert wurde. Das führte dann aufgrund der Formel zu einer Aufsummierung für diesen Monat.
       

      let me := this;
      sum((select Rechnungspositionen
              where year(Rechnung.Rechnungsdatum) = year(me.Rechnungsdatum) and
              month(Rechnung.Rechnungsdatum) = month(me.Rechnungsdatum)).'Netto Gesamt Position')
      

      Wie muss ich denn die Formel anpassen, damit Nettogesamt bei der Erzeugung einer weiteren Rechnung für den gleichen Monat den richtigen - und nicht den aufsummierten Wert - ausgibt?

      Hier einmal die Screenshots dazu

      Viele Grüße
      Markus 

      • Markus.1
      • vor 7 Tagen
      • Gemeldet - anzeigen

      Die Formel für das Feld Nettogesamt habe ich wieder auf 

      sum(Rechnungspositionen.'Netto Gesamt Position')

      geändert. Damit werden die Werte jetzt wieder richtig angezeigt

    • Markus.1
    • vor 8 Tagen
    • Gemeldet - anzeigen
     said:
    Bzw. das selbe noch für das Jahr.

     Wie meinst du das genau?

    • mirko3
    • vor 8 Tagen
    • Gemeldet - anzeigen

    Hallo Markus. Ich nehme an, dass es Dir um die Diagramme geht. Wenn nicht, dann ignoriere den Post einfach.

    Ich würde Dir empfehlen in der eigentlichen Tabelle nicht so viele Berechnungen vorzunehmen, da dies Deine Tabelle verlangsamt - wie schon Peter geschrieben hat. An einer Beispieltabelle ohne verknüpfter Tabelle "Rechnungspositionen", kannst Du mal Codebeispiele sehen, die so ungefähr das wieder geben, was Du wünscht. Die Monatstabelle mit Namen ist am kompliziertesten, da Ninox von sich aus keine Sortierung nach Monatsnamen möglich macht. Da braucht es dann etwas Code dafür. Das kumulierte Diagramm ist wieder mit etwas Berechnung möglich, dafür dann im Dashboard und nicht in der Tabelle. Da Deine Rechnungstabelle ja mit Rechnungspositionen verknüpft ist, könnte in den Diagrammen an jeder Stelle wo ".Nettogesamt" steht einfach ".(sum(Rechnungspositionen.'Netto Gesamt Position'))" stehen. Aber, Ninoxdiagramme sind, gelinde gesagt, altbacken und hakelig in der Erstellung. Es gibt hier im Forum Threads die die Einbindung von Diagrammen durch Fremdprogramme beschreiben. Auch im englischen Forum hat sich jemand sehr liebe- und mühevoll damit befaßt, wenn Du dort unter "Dashboard" suchst. Mirko

      • Markus.1
      • vor 7 Tagen
      • Gemeldet - anzeigen

       Hallo Mirko, vielen Dank für die Beispiel-Datenbank. 

      Genau wie im Diagramm kumulierte Monatswerte, dann allerdings als Liniendiagramm, habe ich es mir gedacht, allerdings in einem Jahresvergleich, d.h. jeweils die Monate 1-12 auf der X-Achse und dann auf der Y-Achse die kumulierten Umsatzwerte der verschiedenen Jahre im Vergleich. 

      Obwohl ich zugegebenermaßen gar nicht weiß, ob das in Ninox überhaupt so darstellbar ist.

      Einen Thread zu dem Thema hatte ich am Wochenende schon gefunden, finde ihn aber gerade nicht wieder 🙈

      Mal schauen, wie ich die Diagramme für mich umsetzen kann

      Viele Grüße
      Markus