0

Fortlaufendes Saldo über Bankkonto errechnen ? (in meiner Datenbank: Trading Journal)

Ich bin im Forum und in den Templates nicht fündig geworden.

Ich erstelle mir gerade ein Trading Tagebuch (Journal) und möchte zuerst meine Trades der Depots in der Datenbank abbilden. Nun hänge ich an der Aufgabe ein Saldo-Verlauf über das Verrechnungskonto zu berechnen. Dabei ist die Tabelle für das Verrechnungskonto eine Untertabelle der Haupttabelle "Depots". Ebenso die Tabelle Positionen ist eine Untertabelle der Haupttabelle "Depots". Das heisst in der Tabelle Verrechnungskonto sollen die Buchungen mehrere Depots landen. 

Jetzt gilt es den Saldenverlauf pro Depot in der Tabelle Verrechnungskonto zu berechnung. 

Aktuell habe ich folgenden Code: 

let aktDS := fortNr;
sum((select VerrKto where fortNr <= aktDS).Einzahlung) - sum((select VerrKto where fortNr <= aktDS).Auszahlung)

Der funktioniert aber nur wenn die Tabelle (VerrKto) ein Depot enthält. Bei mehreren Depots wo sich die fortNr wiederholen kann, funktioniert das nicht

Wie schränke ich die Selektion und die Saldenberechnung auf jeweils das gewählt Konto ein?

Anbei noch mein aktuelles Datenmodell.

Danke schon mal im Voraus!

Bildschirmfoto 2020-02-03 um 22.35.17

Bildschirmfoto 2020-02-03 um 22.40.17

4 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Christian,

    vielleicht so:

    ---
    let aktDS := fortNr;

    let myTab:=Depots.VerrKto;
    sum(myTab[fortNr <= aktDS].Einzahlung) - sum(myTab[ fortNr <= aktDS].Auszahlung)

    ---

    Leo

    • christian_haudek
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Super perfekt, das hat geklappt!!

    Vielen Dank!

    Leo, kann ich mir das Prinzip (die Logik) mit den eckigen Klammern irgandwo nochmal nachlesen. Das hatte ich mal in einem Video gesehen, aber in der Doku nicht wieder gefunden. 

    danke!

    Christian

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Christian,

    Ja im Doku habe ich auch nur an einer Stelle kurz gefunden. Hier meine Erklärung:

    Die eckigen Klammern ersetzten die Bedingung where wenn die Auswahl ohne select passiert. Also wenn man eine Tabelle direkt ansprichst, verwendet man

    select Tabelle where Name="Leo"

    Wenn man eine Untertabelle anspricht dann entfällt "select" und die  Bedingung ist in Klammern geschrieben. 

    UnterTabelle[Name="Leo"];

    man kann eine Tabelle mit select als Variable deklarieren und dann die Variable mit Eckklammern benutzen 

    let myTab:=select Tabelle where Name="Leo";

    first(myTab[text(Anrede)="Herr"]).Nachname

    Die Eckklammern kann man auch generell statt wehre benutzen. Früher hatte ich sogar ein paar Probleme mit where. Inzwischen funktioniert where ganz gut mit select und in allen anderen Fällen nimmt man die Eckklammern.

    Leo

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo, toll, danke. Beim Lesen dieser Erklärung erkannte ich die Lösung für eines meiner Probleme, an denen ich eine Zeit gebastelt habe. So konnte ich gerad die saubere Syntax lernen und es löste sich auf. Mirko