Ripetere un'azione: for e while
Un ciclo ripete un'azione: scorrere tutte le fatture di un cliente per calcolarne il totale, creare una riga per mese, controllare ogni record di una tabella…
Un ciclo for può servire a eseguire del codice e/o a restituire un array di valori. Il tipo dell'array restituito corrisponde al tipo dell'ultima istruzione tra do e end.
Ciclo For
Ciclo su un intervallo di numeri:
for i from 1 to 10 do
i;
end;Ciclo su un array:
var myArray := [1, 3, 5, 7];
for i in myArray do
i;
end;Ciclo sulle chiavi e sui valori di un oggetto JSON:
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;Su come manipolare le variabili JSON in Ninox, vedere: Lavorare con i dati JSON.
È possibile fare lo stesso anche con un record, ma occorre usare NativeJS di Ninext per trasformare un record (nid) in JSON:
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;Questo approccio può essere utile per esportare tutti i campi di una tabella in formati come il CSV. Due precauzioni:
- L'oggetto ottenuto contiene, oltre ai campi designati dalla loro etichetta, le chiavi tecniche
Id,ID,ide_node, e i suoi valori sono grezzi (una data, per esempio, vi è un numero di millisecondi). Scartate queste chiavi per un'esportazione. - Il blocco
#{ … }#viene eseguito solo nel browser in cui Ninext è caricato: in undo as servero in un trigger di tabella (dopo la creazione, dopo la modifica), resta senza effetto. La scheda Errori di Ninext lo segnala.
Ciclo While
I cicli While sono semplici e non restituiscono alcun valore. Servono unicamente a eseguire compiti ripetitivi e non possono essere usati per costruire array.
Esempio:
var a := 1;
while a < 10 do
a := a + 1;
end;