Grundlagen der Ninox-Sprache
Mit der Skriptsprache von Ninox schreiben Sie die Formeln, Schaltflächen und Trigger Ihrer Datenbanken. Diese Seite fasst zusammen, was Sie wissen sollten, bevor Sie Ihre ersten Zeilen schreiben.
Ninox ist eine typisierte und vorkompilierte Sprache. Das heißt, die Datentypen, mit denen die Sprache umgeht, sind im Voraus bekannt – anders als bei Sprachen wie JavaScript, die mit Variablen umgehen können, ohne deren Typ zu kennen.
Ein großer Vorzug von Ninox ist, dass der erzeugte Code besonders zuverlässig ist; Fehlfunktionen treten nur äußerst selten auf.
Zu Ihrer Information: Das Ninox-Skript wird vor der Ausführung nach JavaScript übersetzt.
Verschachtelter und linearer Code
Jede Funktion und jede Anweisung gibt einen Wert zurück, der sich unmittelbar als Parameter an eine andere Funktion oder Anweisung übergeben lässt:
var a := format(now(), "DD/MM/YYYY");So lässt sich einer Variablen eine Reihe verschachtelter Ausdrücke zuweisen:
var a := true;
var b := if a then "true" else "false";Ebenso kann man b das Ergebnis eines in Klammern eingeschlossenen linearen Codeblocks zuweisen:
var b := (
var a := true;
if a then "true" else "false" end
);Denken Sie daran: Bei linearem Code bestimmt stets die letzte Zeile den zurückgegebenen Typ und Wert. In diesem Beispiel ist b gleich 10:
var b := (
var a := true;
if a then "true" else "false" end;
10
);Dieser Block wird in Klammern geschrieben, nicht zwischen do und end wie der Rumpf einer Schleife oder einer Funktion. Der folgende Code wird schon beim Schreiben abgelehnt („Symbol erwartet: as“):
var b := do
var a := true;
if a then "true" else "false" end
end;do … end öffnet einen Block nur nach for … in … do, while … do oder function f(…) do. Überall sonst (am Anfang einer Formel, nach :=, nach then…) kündigt do ein do as server, do as transaction… an: Ninox erwartet dann das Wort as.
Achtung
Über die API gesendet (/query), liefert eine Abfrage, die mit do ohne as beginnt, null, ohne jede Fehlermeldung. Die Falle tritt beim Schreiben einer Testabfrage auf: (var n := 2; n) liefert 2, do var n := 2; n end liefert nichts.
(Gemessen über die API von Ninox.)
Methoden
Methoden sind Funktionen, die einen oder mehrere Parameter entgegennehmen und einen Wert zurückgeben. Sowohl die Parameter als auch der Rückgabewert sind fest vorgegeben.
Manche Methoden lassen mehrere Parameterformen zu:
date(year, month, day)
Gibt einen Datumswert zurück.date(myTimeValue)
Wandelt einen zeitbezogenen Wert in einen Datumswert um. Ist der Wert eine Zahl, so steht er für die Unix-Zeit in Millisekunden.
Eine vollständige Liste der Methoden und ihre Einteilung nach Kategorien finden Sie in der offiziellen Ninox-Dokumentation.
Anweisungen
var, if then else, for, switch, select where usw. sind Anweisungen.
Anders als bei Methoden hängt der Rückgabetyp einer Anweisung von dem Code ab, den sie enthält. Der folgende Code gibt zum Beispiel ein Array von Zahlen [1, 2] zurück:
for i in range(1,3) do
i;
end;