0

Formeln erstellen

Wie kann ich denn die im sreenshot abgebildete Funktion "sum()" verwenden. Sie wird mir unter dem Reiter "Rechnen" nicht angezeigt (auch nicht unter dem link "Referenz der mathematischen Funktionen" auf dieser Seite).

Gruß
Hartmut

142 Antworten

null
    • Alexander_Koenig
    • vor 9 Jahren
    • Gemeldet - anzeigen
    Hallo,
    Ja/Nein und Auswahl Felder übergeben einen Zahlenwert, der bei 1 anfängt. D.h. "Ja" ist 1 und "Nein" eine 2.
    Die Zahlenwert können in Wenn/Dann Funktionen genutzt werden:
    if 'Yes / No' = 1 then
    Datum + 183
    else
    Datum
    • FlorianS
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo,

    Ich möchte bei einer Änderung das geänderte Feld in ein anderes Feld zur Protokollierung schreiben. Wie kann ich das aktuelle Feld ansprechen?
    Oder müsste es per wenn dann Bedingung für jedes Feld einzeln abgefragt werden?
    • Alexander_Koenig
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo Florian,
    wenden Sie einen Trigger auf dem Feld, das geändert wird, an.
    Protokoll := Protokoll+ Feld
    Jedes Mal wenn jetzt das Feld geändert wird, setzt sich das Protokoll aus sich und dem neuen Feldwert zusammen.
    VG, Alex
    • woyzeck
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Bitte um Hilfe: ich möchte aus einer Tabelle "Veranstaltungen" die Summe der VeranstaltungsTAGE berechnen (alle einzelnen Veranstaltungen sind mit einem Datum hinterlegt) - allerdings finden an manchen Tagen auch mehrere Veranstaltungen pro Tag statt - wie könnte ich das realisieren? "cnt.Datum" liefert natürlich die Gesamtanzahl und unterscheidet nicht, ob ein Datum mehrmals vorkommt ...
    • Alexander_Koenig
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo,
    Um eine Spalte oder ein Feld einzublenden:
    cnt(unique(select Veranstaltungen.Datum))
    Mit "select" wird das Feld der Tabelle gewählt und die Funktion wird auf alle Dateneinträge angewendet. "unique" gibt jeden Wert der Liste nur einmal weiter.
    VG, Alex
    • woyzeck
    • vor 8 Jahren
    • Gemeldet - anzeigen
    hallo alex,
    danke für die schnelle antwort!
    ich habe gerade gemerkt, dass mein "Datum"-Feld ein "Datum+Uhrzeit"-Feld ist ... sollte das dann auf die gleiche Weise funktionieren?
    also wie würde der befehl lauten, die uhrzeit-werte zu ignorieren?
    vielen dank schon mal für die mühe!
    • Alexander_Koenig
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo, Daten können mit der Funktion format(Zahl,Format):
    format('datum+Uhrzeit', "DD.MM.YYYY")
    Viele Grüße
    • schocki
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Gibt es eine Liste auf der alle Funktionen, Befehle, usw. also die Sprache von Ninox aufgelistet ist?
    • Alexander_Koenig
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo Schoki, die gibt es hier im Handbuch:
    http://manual.ninoxdb.de/de/funktion-und-sprache/
    VG, Alex
    • schocki
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Das sind aber nicht Alle oder? Zum Bsp. fehlt replace(string, search, replace)
    • Alexander_Koenig
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Nehmen wir auf. Danke für den Hinweis. Grüße
    • sitkialtuntop_gmailcom
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo NINOX-Team, gibt es oder hat schonmal jemand einen IBAN-Rechner generiert?
    • Frank_Bohmer
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo, eine IBAN-Prüfung könnte zB so realisiert werden:

    let cc1 := index("ABCDEFGHIJKLMNOPQRSTUVWXYZ", substr(IBAN, 0, 1)) + 10;
    let cc2 := index("ABCDEFGHIJKLMNOPQRSTUVWXYZ", substr(IBAN, 1, 1)) + 10;
    let check := substr(IBAN, 2, 2);
    let a := number(substr(IBAN, 4, 8));
    let b := number(substr(IBAN, 12, 8));
    let c := number(substr(IBAN, 20, 2) + cc1 + cc2 + check);
    1 = ((a * 62) % 97 + (b * 81) % 97 + c % 97) % 97

    Hinweise: % berechnet den Rest der ganzzahligen Division.
    Die Aufteilung in drei Zahlen a, b, c ist erforderlich, da Ninox intern mit 64bit Fließkommazahlen rechnet. Diese können eine gesamte IBAN nicht mehr exakt als Ganzzahl abbilden. a*62 entspricht der Verschiebung um 16 Stellen (mod 97), b*81 entspricht der Verschiebung um 8 Stellen (mod 97).
    Der Rest entspricht dem Algorithmus von Wikipedia: https://de.wikipedia.org/wiki/IBAN
    Viele Grüße, Frank
    • Leonid_Semik
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Guten Morgen,
    Wenn ich eine Tabelle im Ninox öffne, gibt es links eine Aufzählungsspalte. Diese Spalte wollte ich auch in einer verknüpften Tabelle erstellen.
    Also Tabellen "Angebote" und "Positionen". In der Tabelle "Positionen" ein Berechnungsfeld "Nummer" mit Formel:

    let N := Angebot;
    let Z := number(Nr);
    cnt(select Positionen where Angebot = N and number(Nr) < Z) + 1

    Wenn ich mich im Formular für eine Position befinde, zeigt das Feld "Nummer" auch die richtige Werte. Im Angebotsformular sind aber in der Tabelle "Positionen" alle Werte in der Spalte "Nummer" gleich 1. Dieses Phänomen tritt nur bei der Server-Version. MAC-APP zeigt alles richtig an.

    Gibt es ein anderen Weg, die Aufzählungsspalte in verknüpften Tabelle darzustellen?

    Gruß Leo
    • Leonid_Semik
    • vor 8 Jahren
    • Gemeldet - anzeigen
    keine Ideen?
    • Frank_Bohmer
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    bei Verknüpfungen ist es ratsam, auf select zu verzichten, da Ninox den Sprung über die Verknüpfungsfelder erheblich performanter hinbekommt. Bitte versuche:

    let Z := number(Nr);
    cnt(Angebot.Positionen[number(Nr) < Z])+1

    Viele Grüße,
    Frank
    • Leonid_Semik
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo Frank,
    dankeschön - funktioniert wunderbar.

    Die Schleifen funktionieren aber nur mit "select"?

    Gruß
    Leo
    • Leonid_Semik
    • vor 8 Jahren
    • Gemeldet - anzeigen
    wenn aus der Tabelle "Angebote" in der verknüpften Tabelle "Positionen" Berechnungen mit Schleifenfunktion durchführen möchte
    "for P in Positionen
    P.Zahl1:=10" bis dahin akzeptiert Ninox alles, wenn ich aber weiter mit Semikolon schreibe
    "for
    P in Positionen
    P.Zahl1:=10;
    P.Zahl2:=20" - wird oben die Fehlermeldung angezeigt Error: eine Tabellenspalte wurde nicht gefunden "P". Wenn ich statt Semikolon ein Plus nehme, funktioniert das ganze.
    Mit select funktioniert alles mit Semikolon.
    Geprüft mit Mac und Server.

    Gruß Leo
    • Frank_Bohmer
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Das muss eingeklammert werden, das ; beendet sonst das for.

    for P in Positionen (
    P.Zahl1:=10;
    P.Zahl2:=20
    )

    Gruß Frank
    • Leonid_Semik
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo Frank,
    Funktioniert leider nicht. Wenn Ich Klammer nach Positionen setze,
    kommt die Fehlermeldung sofort nach Eingeben von "P. ". Habe schon alle möglichen Kombinationen ausprobiert : ohne Klammer, mit Klammer, Klammer nur vorne, Klammer nur hinten.
    Es ist sogar so, dass wenn ich ohne Klammern

    for P in Positionen
    P.Zahl1:=10

    schreibe und schließe, macht Ninox eigene Umklammerung. Bei erneuertem Öffnen des Formeleditors und Klicken auf OK - bekomme ich wieder die Fehlermeldung.
    Hier ist die Datei, vielleicht übersehe ich etwas

    https://www.dropbox.com/s/hjd9f1rw9j0ilts/test%20%284%29.ninox?dl=0

    Gruß
    Leo
    • Frank_Bohmer
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo Leo,
    stimmt, das ist leider nicht optimal. Folgende Syntax funktioniert:

    for P in (Positionen) (
    P.Zahl1:=10;
    P.Zahl2:=20
    )
    • Leonid_Semik
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo Frank,
    Das funktioniert bei mir auch nicht. Ninox lässt zwar die Formel zu, sobald ich aber auf "OK" klicke, wird die Funktion rot angezeigt un die Formel lautet (for P in B(P.(B:=10);P.(C:=20)))).
    Die Fehlermeldung lautet:
    "Die Formel ist ungültig: Error: Eine Tabellenspalte wurde nicht gefunden: "P" in Zelle 1, Spalte 14.

    Auf Mac und Server.

    Gruß Leo
    • Frank_Bohmer
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Wir werden das verbessern.
    Eine andere Möglichkeit wäre (ohne for ... in):

    Positionen.(Zahl1 := 10; Zahl2 := 20)

    Gruß, Frank
    • Leonid_Semik
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Hallo Frank,
    Dankeschön-funktioniert sogar bei mehreren if then Kombinationen und mehr als 100 Berechnungszeilen.
    Und ist im Vergleich zu (for in select) doppelt zu schnell.

    Gruß Leo
    • sky99.1
    • vor 8 Jahren
    • Gemeldet - anzeigen
    Guten Tag,
    ich suche nach einer Formel mit der ich automatisch berechnen kann, an welchem Tag (Datum) eine Person 63 Jahre alt wird. Gibt es die Möglichkeit dies mit einer Formel automatisch ausrechnen zu lassen?

    Viele Grüße
    sky99