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
Gruß
Hartmut
142 Antworten
-
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 -
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? -
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 -
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 ... -
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 -
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! -
Hallo, Daten können mit der Funktion format(Zahl,Format):
format('datum+Uhrzeit', "DD.MM.YYYY")
Viele Grüße -
Gibt es eine Liste auf der alle Funktionen, Befehle, usw. also die Sprache von Ninox aufgelistet ist?
-
Hallo Schoki, die gibt es hier im Handbuch:
http://manual.ninoxdb.de/de/funktion-und-sprache/
VG, Alex -
Das sind aber nicht Alle oder? Zum Bsp. fehlt replace(string, search, replace)
-
Nehmen wir auf. Danke für den Hinweis. Grüße
-
Hallo NINOX-Team, gibt es oder hat schonmal jemand einen IBAN-Rechner generiert?
-
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 -
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 -
keine Ideen?
-
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 -
Hallo Frank,
dankeschön - funktioniert wunderbar.
Die Schleifen funktionieren aber nur mit "select"?
Gruß
Leo -
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 -
Das muss eingeklammert werden, das ; beendet sonst das for.
for P in Positionen (
P.Zahl1:=10;
P.Zahl2:=20
)
Gruß Frank -
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 -
Hallo Leo,
stimmt, das ist leider nicht optimal. Folgende Syntax funktioniert:
for P in (Positionen) (
P.Zahl1:=10;
P.Zahl2:=20
) -
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 -
Wir werden das verbessern.
Eine andere Möglichkeit wäre (ohne for ... in):
Positionen.(Zahl1 := 10; Zahl2 := 20)
Gruß, Frank -
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 -
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
Content aside
- vor 6 JahrenZuletzt aktiv
- 142Antworten
- 45027Ansichten