Repetir una acció: for i while

Un bucle repeteix una acció: recórrer totes les factures d'un client per sumar-les, crear una línia per mes, comprovar cada registre d'una taula…

Un bucle for es pot fer servir per executar codi i/o retornar una taula de valors. El tipus de la taula retornada correspon al tipus de la darrera instrucció entre do i end.

Bucle For

Recórrer un interval de nombres:

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

Recórrer una taula:

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

Recórrer les claus i els valors d'un objecte JSON:

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;

Vegeu com manipular variables JSON a Ninox: Treballar amb dades JSON.

També es pot fer el mateix amb un registre, però cal fer servir NativeJS de Ninext per transformar un registre (nid) en JSON:

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;

Aquest enfocament pot ser útil per exportar tots els camps d'una taula a formats com ara CSV. Dues precaucions:

  • L'objecte obtingut conté, a més dels camps designats per la seva etiqueta, les claus tècniques Id, ID, id i _node, i els seus valors són en brut (una data, per exemple, hi és un nombre de mil·lisegons). Descarteu aquestes claus per a una exportació.
  • El bloc #{ … }# només s'executa al navegador on s'ha carregat Ninext: en un do as server o en un activador de taula (després de crear, després de modificar), no té cap efecte. La pestanya Errors de Ninext ho assenyala.

Bucle While

Els bucles While són simples i no retornen cap valor. Serveixen únicament per fer tasques iteratives i no es poden fer servir per construir taules.

Exemple:

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