0

Summe über Felder in anderer Tabelle

Hallo,

ich weiß, dass das Thema hier bereits mehrfach auftaucht, aber ich habe keine Lösung gefunden.

In einer Tabelle Rechnungen habe ich die Felder bezahlt/offenPerson und Rechnungsbetrag.

In einer anderen Tabelle möchte ich jetzt die Summe der Rechnungsbeträge bilden für eine bestimmte Person, wenn das Auswahl Feld bezahlt/offen den Eintrag offen enthält. Klingt simpel, wird es auch sein, aber mein Befehlt führt nicht zum Erfolg:

let Summe := sum((select Rechnungen where 'bezahlt/offen' = 1 and Person = "NamederPerson").Rechnungsbetrag);
Summe;

wobei der Status 1 bei bezahlt/offen eben offen bedeutet (der erste Eintrag der Auswahl).

Was mache ich da falsch? Ich bekomme als Ausgabe 0, aber da sind defintiv Rechnungen mit offen und Rechnungsbeträgen größer Null bei Person Nameder Person

Grüße

Maurice

11 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Maurice

    ---

    let myName:=Person;

    sum(select Rechnungen where 'bezahlt/offen' = 1 and Person = myName.Rechnungsbetrag);

    ---

    Dabei Person in erster Zeile - der Name des Suchfeldes. Wenn das Feld anders  heißt, musst du ändern.

    Leo

    • Maurice
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke, aber das Feld Person gibt es nur in der Tabelle Rechnungen, nicht in der Tabelle, in der die Funktion aufgerufen wird (deshalb Fehlermeldung). Hinzu kommt, dass der Name der Person ein ganz bestimmter sein soll, z. B. Sabine. In meinem Beispiel hatte ich das "NamederPerson" deshalb in Anführungszeichen gesetzt. Es gibt quasi ein Extra-Feld "Summe Sabine", in der die entsprechende Summe gebildet werden soll. "Summe Martin" gibt ein neues Feld.

    Hintergrund: es geht um das Einreichen von Rechnungen. Erst ab einem bestimmten Betrag macht das Einreichen von rechnungen bei einer Person Sinn. Und dieser Grenzbetrag ist von Person zu Person verschieden. So kann es sein, dass ich Rechnungen von einer Person einreiche (Summe überschreitet deren individuellen Betrag), von einer anderen nicht (deren Summe übersteigt nicht deren individuellen Betrag).

    Ich habe jetzt auch versucht - ich nehme mal Sabine:

    let Summe := sum((select Rechnungen where 'bezahlt/offen' = 1 and text(Person) = "Sabine").Rechnungsbetrag);
    Summe;

    funktioniert auch nicht.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ist Person ein Auswahlfeld?

    • Maurice
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Nein, Person ist ein Feld, das in der Tabelle Rechnungen verknüpft ist mit einem Feld Personen in einer anderen Tabelle. Liegt es daran?

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Versuch mal mit:

    sum((select Rechnungen where 'bezahlt/offen' = 1 and Person.Name = "Sabine").Rechnungsbetrag);

    ---

    oder Statt Name das Feld, wo Sabine drin steht

     

    Leo

    • Maurice
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Sabine steht im Feld Person in der Tabelle Rechnungen

    Es gibt darüberhinaus eine Tabelle Personen (Plural), in der alle Personen, die Rechnungen generieren, angelegt sind. Dort gibt es ein Feld Name, aber in der Tabelle Rechnungen nicht.

    Grüße

    Maurice

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Kannst du bittte ein paar screenshot machen. Vom Datenmodell und vom Formular?

    • Maurice
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Bin ohne Ninox unterwegs, wird bis Samstag dauern.

    • Maurice
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Anbei Datenmodell:

    2019-02-03_15-39-20

    2019-02-03_15-42-01

    Es geht um die Tabelle Antragsbedingungen, um das Feld Rechnungen einreichen. Mit

    let Aussage := "nein";
    let Summe := sum((select Rechnungen where 'bezahlt/offen' = 1 and Person = "M").Rechnungsbetrag);
    Summe

    wollte ich erst einmal schauen, wie groß die Summe der offenen Beträge sind für Person M. Später in eine If-Schleife einbauen, um dann die Aushabe zu genrieren "ja" (bei Einreichen) und "nein" bei nicht einreichen. Mit dem styled Befehlt kann man das ja sogar noch schön einfärben. Aber erstmal müssen die offenen Beträge richtig summiert werden.

    In der Tabelle "Rechnungen" gibt es ein Auswahlfeld "bezahlt/offen", bei dem der erste Eintrag "offen" ist.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Maurice,

    Ich brauche noch ein screenshot von dem Formular der Tabelle Rechnungen, wo die Verknüpfung zu der Tabelle Personen zu sehen ist und ein Screenshot von dem Formular der Tabelle Personen von der Name von "M" steht.

    Oder du nimst die Formel:

    ---

    sum((select Rechnungen)['DER NAME DER VERKNÜPFUNG ZU DER TABELLE PERSONEN IM FORMULAR RECHNUNGEN'.'DER NAME DES FELDERS IM FORMULAR PERSONEN WO "M" STEHT'  = "M"].Rechnungsbetrag)

    ---

    und fügst entsprechenden Namen hinzu. Etwa so:

    sum((select Rechnungen)[Personen.Name = "M"].Rechnungsbetrag)

     

    Leo

    • Maurice
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    super. Vielen Dank. Hat geklappt. Man muss also den Feldname in im Formular aufführen, gefolgt vom Feldnamen in der verknüpften Tabelle. Wieder was gelernt.

    Das Prüfkriterium "Bezahlt/offen" habe ich auch eingebaut. 

    Grüße

    Maurice

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 11Antworten
  • 4479Ansichten