Formeln und Berechnungen

Formeln sind ein mächtiges Werkzeug, um Ihre Daten zu analysieren und auszuwerten. Mit Formeln können Sie mathematische Berechnungen anstellen, Datumsrechnungen durchführen oder automatische Texte erzeugen.  Dabei greifen Sie nicht nur auf die Felder eines einzelnen Datensatzes zu, sondern haben auch die Möglichkeit, Daten aus verknüpften Tabellen einzubeziehen.

Formeln werden an mehreren Stellen in Ninox verwendet:

  • Bei der Definition von Tabellen können auch Felder vom Datentyp Formel angelegt werden. Das Berechnungsergebnis ist dann in Eingabeformularen sichtbar und kann als Tabellenspalte angezeigt werden.
  • Die Konfiguration von Ansichten bzw. Tabellenspalten ermöglicht zudem, Formeln anzulegen, die nur in dieser Ansicht sichtbar sind.
  • Massendatenänderungen nutzen Formeln, um ein Datenfeld für eine große Zahl von Datensätzen mit einem berechneten Ergebnis zu füllen.
  • Trigger (“Nach Änderung folgendes Skript ausführen…”) nutzen Formeln, um ein Datenfeld mit einem berechneten Wert zu aktualisieren.

Grundlagen

Funktionsreferenz

21 Gedanken zu „Formeln und Berechnungen

  1. Hallo,
    folgendes Problem: Ich möchte eine Art Zeitreihe in einem Diagramm darstellen. Auf der X-Achse also Datum (nehme ich aus einem Tabellenfeld), auf der Y-Achse die Summe aller bis zum jeweiligen Zeitpunkt aufgelaufenen Beträge. Die Besonderheit ist, das eine weitere Filterbedingung gibt, ansonsten wäre es einfach.
    Erster Ansatz:
    let pos_geschlossen := Geschlossen;
    sum(Positionen[Geschlossen <= pos_geschlossen and Trade.Konto = 2]

    Resultiert in einer Fehlermeldung, weil wohl an dieser Stelle keine logische Verknüpfung erlaubt ist.

    Zweiter Ansatz:
    let pos_geschlossen := Geschlossen;
    let summe := 0;
    for pos in (select Position where Geschlossen <= pos_geschlossen and Trade.Konto = 2) do
    summe = summe + pos.'Profit/Loss'
    end
    ;
    number(summe)

    Keine Fehlermeldung, aber Ergebnis immer 0.

    Gibt es eine Lösung?

    VG, Ralf

    1. Hallo Ralf,
      ohne Datenbank ist schwer einzuschätzen. Versuch mal damit:
      let pos_geschlossen := Geschlossen;
      let POS:=select Position;
      sum(POS[Geschlossen <= pos_geschlossen and Trade.Konto = 2].Positionen)

      Grüße
      Leo

    2. Hallo,
      ohne Deine Datenbank und die Felder zu kennen, sehe ich doch, dass in der zweiten Variante die Zeile
      –––
      summe = summe + pos.'Profit/Loss'
      –––

      nichts dazu addiert sondern einen Vergleich ausführt. Zuweisungen müssen so geschrieben werden:
      –––
      summe := summe + pos.'Profit/Loss'
      –––

      Per Fernwartung würde ich sagen, dass die richtige Formel wohl so lauten sollte:
      –––
      sum(select Positionen[Geschlossen < = pos_geschlossen and Trade.Konto = 2].'Profit/Loss'
      –––

      Schreib mir doch bei Bedarf eine Mail an support@ninoxdb.de
      Gruß
      Birger – Ninox Support

      1. Hallo Birger,

        sum(select Position[… funktioniert! Vielen Dank für die schnelle Rückmeldung.
        Prima wäre es, wenn Ihr in Eurer Doku die Syntax etwas generischer darstellen könntet. Muss ja nicht gleich BNF sein…

        Ninox ist ein tolles Produkt.

        VG, Ralf

  2. Ich habe in einer Tabelle ein berechnetes Feld ‘Bewertung’ in dem je nach dem der Text ‘OK’ oder ‘Fehler’ angezeigt wird. Jetzt hätte ich aber gerne zusätzlich den Hintergrund des Felds entsprechend rot oder grün eingefärbt. Wie kann ich denn das bewerkstelligen?

    1. Hallo Jofe,
      direkt geht das nicht. Man kann aber so vorgehen.
      du legst ein Auswahlfeld an und nennst es z.B. “BEW”. Dort legst du die Optionen “Ok” und “Fehler” als 1 und 2 und weist auch die Farben rot und grün zu.
      Jetzt nimmst du die Formel von deinem Berechnungsfeld und platzierst diese als trigger nach Änderung bei dem Bezugsfeld von “Berechnung”. Etwa so

      if Bezugfeld=”XXX” then BEW:=1 else BEW:=2

      Jetzt hast du schon deine Farben und Texte. aber das Feld BEW ist veränderbar, was nicht so gut ist.

      Du kannst jetzt bei BEW in erweiterten Eigenschaften schreiben “sichtbar wenn” – false. und bei “Bewertung” einfach als Formel: BEW

      “Bewertung” übernimmt die Farbe und den Text von BEW.

      Ich hoffe du konntest mir folgen.

      Grüße
      Leo

      1. Ich konnte Dir zwar folgen (denke ich zumindest ;-) ) aber das Bezugsfeld für mein Bewertungsfeld ist ebenfalls ein berechnetes Feld und dort gibt es keine Möglichkeit ein Skript auszuführen.

  3. Hallo.

    Ich schaue gerade, ob ich mit Ninox unsere Ferienwohnung verwalten kann. Über einige Funktionen bin ich mir schon im klaren. Offen wäre für mich vor allem, ob ich datumsabhängige Mietpreise berechnen kann. Je nach Saison ändert sich der Mietpreis. Hierbei wäre vor allem der Fall interessant, wenn die Mietzeit in zwei Saisonpreisen liegt. Kann ich diese Berechnung in Ninox abbilden?

    Vielen Dank.
    Götz

  4. Hallo,
    ich habe folgendes Problem:
    in der Vorlage “Arbeitszeiterfassung” habe ich ein Ja/Nein Feld “abgerechnet”, ein Berechnungsfeld “offen” und ein Textfeld “Kunde” ergänzt. Nun möchte ich im Berechnungsfeld “offen” alle Arbeitszeiten aufsummiert angezeigt bekommen, die zu dem gleichen Kunden gehören und nicht das Flag abgerechnet=1 haben. Alle meine Versuche mit Select und sum scheitern bisher.
    Was mache ich falsch?
    Mit freundlichen Grüßen
    Frank

  5. Hallo. ich habe das Rechnungstemplate von NINOX genommen und dahingehend angepasst, daß die Artikel unterschiedliche MwSt.Sätze haben können. Desweiteren habe ich in der Tabelle “Rechnungsposition” ein Berechnungsfeld für den jew. MwSt-Betrag eingefügt.

    Nun möchte ich in der Rechnungsansicht die Summen der unterschiedlichen MwSt.Sätze separat ausweisen können, also z.B.

    Summe 7% Mwst: xx,xx EUR
    Summe 19% MwSt:xx,xx EUR

    Hat jmd. eine Idee wie ich das lösen könnte?

    Vielen Dank schon mal für jede Unterstützung!
    Werner

    1. Hallo Werner,

      angenommen, du hast in der Tabelle Artikel das Feld “MwSt.Satz” als Auswahlfeld, wo Nr.1 – 7%, Nr.2 -19% usw. sind.
      Dann wäre die Formel für ein Berechnungsfeld “Summe 7% Mwst” :

      sum(Rechnungsposition[Artikel.'MwSt.Satz'=1].(Anzahl*Artikel.Preis))*0.07

      Für “Summe 19% Mwst” entsprechend:

      sum(Rechnungsposition[Artikel.'MwSt.Satz'=2].(Anzahl*Artikel.Preis))*0.19

      Die Zahlenformat für diese Berechnungsfelder bitte als Währung (1.023,42€ )

      Gruß
      Leo

  6. Folgendes Problem:
    Ich kann in Abhängigkeit des Wertes eines Auswahlfeldes nicht folgende Formel zum laufen bringen (In Abhängigkeit zu einem Textfeldinhalt funktioniert es):

    if Auswahl = “Jährlich” then
    (Wiedervorlagedatum := Testdatum + 365)
    else
    if Auswahl = “Halbjährlich” then
    (Wiedervorlagedatum := Testdatum + 180)
    else
    if Auswahl = “Vierteljährlich” then
    (Wiedervorlagedatum := Testdatum + 90)
    else
    if Auswahl = “Monatlich” then
    (Wiedervorlagedatum := Testdatum + 30)
    else
    (Wiedervorlagedatum := today())
    Wo liegt mein Denkfehler?

    Ansonsten:
    Tolle App, habe meine komplette Modellbahnverwaltung und Inventarisierung darüber abgebildet.

    1. In Formel müssen die Werte von Auswahlfeldern mit ihrem numerischen Wert angesprochen werden (den kann man in den Feldeinstellungen sehen), also zB

      if Auswahl=1 then ... else if Auswahl = 2 ...

      Viele Grüße, Frank

Hinterlasse eine Antwort