Repetir una acción: for y while
Un bucle repite una acción: recorrer todas las facturas de un cliente para sumarlas, crear una línea por mes, comprobar cada registro de una tabla…
Un bucle for sirve para ejecutar código y/o devolver un array de valores. El tipo del array devuelto corresponde al tipo de la última instrucción que hay entre do y end.
Bucle for
Recorrer un intervalo de números:
for i from 1 to 10 do
i;
end;Recorrer un array:
var myArray := [1, 3, 5, 7];
for i in myArray do
i;
end;Recorrer las claves y los valores de un objeto 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;Vea cómo manipular las variables JSON en Ninox: Trabajar con datos JSON.
También se puede hacer lo mismo con un registro, pero hay que usar NativeJS de Ninext para transformar un registro (nid) en 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;Este enfoque puede resultar útil para exportar todos los campos de una tabla a formatos como CSV. Dos precauciones:
- El objeto obtenido contiene, además de los campos designados por su etiqueta, las claves técnicas
Id,ID,idy_node, y sus valores están en bruto (una fecha, por ejemplo, es en él un número de milisegundos). Descarte esas claves para una exportación. - El bloque
#{ … }#solo se ejecuta en el navegador donde está cargado Ninext: en undo as servero en un trigger de tabla (después de crear, después de modificar), no tiene efecto. La pestaña Errores de Ninext lo señala.
Bucle while
Los bucles While son sencillos y no devuelven ningún valor. Sirven únicamente para realizar tareas repetitivas y no se pueden usar para construir arrays.
Ejemplo:
var a := 1;
while a < 10 do
a := a + 1;
end;