Eine Aktion wiederholen: for und while

Eine Schleife wiederholt eine Aktion: alle Rechnungen eines Kunden durchgehen, um die Summe zu bilden, eine Zeile pro Monat anlegen, jeden Datensatz einer Tabelle prüfen …

Mit einer for-Schleife führen Sie Code aus und/oder geben ein Array von Werten zurück. Der Typ des zurückgegebenen Arrays entspricht dem Typ der letzten Anweisung zwischen do und end.

for-Schleife

Einen Zahlenbereich durchlaufen:

Ninox
for i from 1 to 10 do
    i;
end;

Ein Array durchlaufen:

Ninox
var myArray := [1, 3, 5, 7];
for i in myArray do
    i;
end;

Schlüssel und Werte eines JSON-Objekts durchlaufen:

Ninox
var config := {
    sep: ",",
    qut: """",
    lf: "%0D%0A",
    numberFormat: "point",
    dateFormat: "locale",
    header: true,
    sepHeader: false,
    encoding: "utf8"
};

for key, value in config do
    key + " = " + value;
end;

Wie man JSON-Variablen in Ninox handhabt, lesen Sie hier: Mit JSON-Daten arbeiten.

Dasselbe ist auch mit einem Datensatz möglich, doch dazu brauchen Sie NativeJS von Ninext, um einen Datensatz (nid) in JSON umzuwandeln:

Ninox
var rec := (first(select Customer));

"Transforming a record into a JSON object";
var config := #{:any return rec}#;

for fieldName, value in config do
    fieldName + " = " + value;
end;

Dieses Vorgehen ist nützlich, um alle Felder einer Tabelle in Formate wie CSV zu exportieren. Zwei Vorsichtsmaßnahmen:

  • Das erhaltene Objekt enthält neben den über ihre Beschriftung bezeichneten Feldern die technischen Schlüssel Id, ID, id und _node, und seine Werte sind roh (ein Datum etwa ist dort eine Anzahl Millisekunden). Lassen Sie diese Schlüssel bei einem Export weg.
  • Der Block #{ … }# wird nur in dem Browser ausgeführt, in dem Ninext geladen ist: In einem do as server oder in einem Tabellen-Trigger (nach dem Anlegen, nach dem Ändern) bleibt er ohne Wirkung. Der Reiter Fehler von Ninext meldet dies.

while-Schleife

While-Schleifen sind einfach und geben keinen Wert zurück. Sie dienen ausschließlich wiederholten Arbeitsschritten und eignen sich nicht zum Aufbau von Arrays.

Beispiel:

Ninox
var a := 1;
while a < 10 do
    a := a + 1;
end;