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
-
Hm, der Screenshot ist nicht dabei gewesen
-
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
-
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
-
said:
Bzw. das selbe noch für das Jahr.Wie meinst du das genau?
-
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
Content aside
- vor 7 TagenZuletzt aktiv
- 9Antworten
- 55Ansichten
-
4
Folge bereits