0

Zählen Summe Punkt vor Strich beachten

Habe leider ein Problem wo ich nicht ganz durchblick mehr.

Habe in einer Tabelle (Spieler) 4 Namen (Claus , Norbert, Peter, Hans) ich würde gerne dort die Kartenpunkte hinzufügen. (10 Datensätze mit verschiedenen Nummern)

In einer 2. Tabelle (Total) würde ich gerne die Datensätze zusammenrechnen (ein Total aller Punkte des jeweiligen Spielers) soweit bin ich gekommen.

sum((select Spieler).Claus)

Das ergibt ein Summe zb 100 bei Claus, 100 bei Norbert und 50 bei Hans sowie 0 bei Peter.

Nun möchte ich aber die Differenz für Claus ausrechnen. Claus hat 100 und schuldet 0 an Norbert, 50 an Hans und 100 an Peter. Diese sollten dann bedeuten ich Schulde -150 Punkte. Wie kann ich das am besten  berechnen stoße da an mein Limit leider. Habe ein 2. Feld eingefügt aber mit der Formel komm ich nicht weiter.

let my1 := number(Claus);
let my2 := number(Norbert);
let my3 := number(Hans);
let my4 := number(Peter);

number(my2) - number(my1) + (number(my3) + number(my1)) + (number(my4) - number(my1))

Müsste da nich Punkt vor Strich gerechnet werden. Blick da leider nicht mehr durch.

Bitte vielleicht könnte mir da jemand einen Tipp geben wie es am leichtesten geht. Vielen  Dank mfg Claus

6 Antworten

null
    • Siegfried_H
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Mal eine kleine Nachfrage an Claus.

    Wo hast du hier eine Punktrechnung? 

    number(my2) - number(my1) + (number(my3) + number(my1)) + (number(my4) - number(my1))

    Ich sehe hier nur Addieren und Subtrahieren.

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Claus. Wenn Deine Tabelle Spieler die Felder "Name" und "Kartenpunkte" enthält, dann wäre die Formel für die Summe der Kartenpunkte des Spielers Claus.

    sum((select Spieler)[Name = "Claus"].Kartenpunkte)

     

    Dann würde die zweite Formel

    let my1:=sum((select Spieler)[Name = "Claus"].Kartenpunkte);

    let my2:=sum((select Spieler)[Name = "Norbert"].Kartenpunkte);

    let my3:=sum((select Spieler)[Name = "Hans"].Kartenpunkte);

    let my4:=sum((select Spieler)[Name = "Peter"].Kartenpunkte);

    my1-my2-my3-my4

    heißen. Entweder so, oder ich verstehe das Spiel nicht ;-)

    Mirko

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ups. Die 3 vergessen.

    let my1:=sum((select Spieler)[Name = "Claus"].Kartenpunkte);

    let my2:=sum((select Spieler)[Name = "Norbert"].Kartenpunkte);

    let my3:=sum((select Spieler)[Name = "Hans"].Kartenpunkte);

    let my4:=sum((select Spieler)[Name = "Peter"].Kartenpunkte);

    3*my1-my2-my3-my4

    M

    • Claus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vielen dank für die Tipps.

    MZ habe es mit deinem Ansatz versucht kommt aber die Fehlermeldung nach folgender Zeile

    (3*my1-my2-my3-my4  bei dieser Formel)

    Ungültiger Operator: number * string in Zeile 9, Spalte 6

     

    Ps. Was hat es mit dem 3* auf sich? verstehe es nicht ganz.

    Vielen Dank für Erläuterung

    Grüsse Claus

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Claus, da denke ich mal, dass Deine Felder für die Kartenpunkte Textfelder sind. Ich habe Zahlenfelder benutzt.

    Für Textfelder wäre der Code:

    let my1:=sum((select Spieler)[Name = "Claus"].Kartenpunkte);

    let my2:=sum((select Spieler)[Name = "Norbert"].Kartenpunkte);

    let my3:=sum((select Spieler)[Name = "Hans"].Kartenpunkte);

    let my4:=sum((select Spieler)[Name = "Peter"].Kartenpunkte);

    3*number(my1)-number(my2)-number(my3)-number(my4)

    ---

    zur "3*" ist zu sagen, dass

    number(my2) - number(my1) + number(my3) +{hier müsste auch ein - stehen} number(my1) + number(my4) - number(my1)

    =3*number(my1) so wie

    a+a+a=3*a ist. Aber Deine Schreibweise geht natürlich auch, bis auf das Minuszeichen. Vielleicht habe ich das Spiel ja wirklich nicht verstanden. Ich dachte, Du willst die Gesamtdifferenz Deiner Punktzahl zu den Punktzahlen der Mitspieler ausrechen. Also hast Du 0 Pkt und jeder Spieler 100, dann kommt -300 heraus. Wenn Du 100 hast und alle haben 30, dann kommt +210 heraus. In jedem Fall sollten die Beträge entweder stets von deinem Betrag abgezogen werden oder IMMER Dein Betrag von den Mitspielerbeträgen. Schau mal, ob es Dir etwas nützt, was ich schreibe. M

    • Claus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    tolle Erklärung es stimmt wie du mir es geschrieben hast (Spiel richtig verstanden ;) vielen Dank

    Habe es nun selber hinbekommen mit Teilen deiner Hilfe.

    let my1 := sum((select Spieler).number(Norbert)) - sum((select Spieler).number(Didi));
    let my2 := sum((select Spieler).number(Walter)) - sum((select Spieler).number(Didi));
    let my3 := sum((select Spieler).number(Christof)) - sum((select Spieler).number(Didi));
    let my4 := sum((select Spieler).number(Claus)) - sum((select Spieler).number(Didi));
    let my5 := sum((select Spieler).number(Geri)) - sum((select Spieler).number(Didi));
    sum(my1 + my2 + my3 + my4 + my5)

     

    kommt das gleicht Resultat heraus vielleicht nicht so schön programmiert aber den Zweck hat es erfüllt.

    Nochmal Danke für die schnelle Hilfe

    Grüsse Claus