0

Frage zur Summenbildung

Hallo,

wie ermittle ich die Summe eines Datenbankfeldes vom ersten bis zum aktuellen Datensatz. Es soll in jedem Datensatz die sich bis dahin ergebene Summe angezeigt werden. Meine Formel zeigt in jedem Datensatz die Gesamtsumme an: 

sum((select '1.4 Umsätze Konto 12345789').Betrag)

Viele Grüße

6 Antworten

null
    • Birger_H
    • vor 6 Jahren
    • Gemeldet - anzeigen

    –––
    let thisID := _id;

    sum((select '1.4 Umsätze Konto 12345789' [_id<=this._id]).Betrag)
    –––

    Birger

    • Freiberufler
    • HGO49
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Vielen Dank für die schnelle Antwort! Was bedeutet in der Formel der Unterstrich vor der id, so bekomme ich weiterhin die Gesamtsumme.

    Hans Georg

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Hans Georg,

    Die Interne Ids werden in Ninonx je nach Sprachvarinate unterschiedlich bezeichnet. In englischem heißen sie Id, in deutschem - Nr. Die Bezeichnung _id kann man sprachunabhängig benutzen, Ninox korrigiert die Namen dann je nach Sprache  in Nr oder Id.

    Jetzt zu der Formel, das sind leider noch ein paar Fehlerchen drin.

    1. die Variable thisID wird in der zweiten Zeile gsr nicht verwendet, stattdessen wird this._id benutzt und Ninox Interpretiert diese Bedingung ([_id<=this._id]) falsch. Dementsprechend wäre die richtigere Formel von Birger:

    ---

    let thisID:=_id;

    sum((select '1.4 Umsätze Konto 12345789' [_id<=thisID]).Betrag)

    ---

    Hier kommt aber das zweite Problem: die Interne IDs werden von Ninox bei mathematischen Berechnungen eigentlich als Texte behandelt, deswegen werden die Zwischensummen spätestens ab Datensatz Nummer 10 falsch berechnet, weil 10 als Text kleiner ist als 2 oder 3. Das ist verwirrend, weil in der Tabellendarstellung  die Sortierung nach Nr immer richtig angezeigt wird. Um dies zu korrigieren, muss man die Nummer von IDs ergliechen, also:

    ---

    let thisID := number(_id);
    sum((select '1.4 Umsätze Konto 12345789')[number(_id) <= thisID].Betrag)

    ---

    Leo

    • Freiberufler
    • HGO49
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    das ist eine sehr gute und verständliche Erklärung. Ach ja, Dein Vorschlag ist auch absolut richtig! Hast Du eine bessere Anleitung oder alles durch Nachdenken herausgefunden?

    Vielen Dank für die super schnelle Hilfe
    Hans Georg

    PS ...ergliechen soll hier heißen, den Text zu einer Zahl machen?

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    😊Autokorrektur. Es sollte eigentlich vergleichen heißen.

    • Freiberufler
    • HGO49
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Danke!

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 6Antworten
  • 1730Ansichten