Répéter une action : for et while
Une boucle répète une action : parcourir toutes les factures d'un client pour en faire le total, créer une ligne par mois, vérifier chaque fiche d'une table…
Une boucle for sert à exécuter du code et/ou à renvoyer un tableau de valeurs. Le type du tableau renvoyé correspond au type de la dernière instruction située entre do et end.
Boucle for
Parcourir une plage de nombres :
for i from 1 to 10 do
i;
end;Parcourir un tableau :
var myArray := [1, 3, 5, 7];
for i in myArray do
i;
end;Parcourir les clés et les valeurs d'un objet 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;Voyez comment manipuler les variables JSON dans Ninox : Manipuler des données JSON.
Il est également possible de faire de même avec un enregistrement, mais il faut utiliser le NativeJS de Ninext pour transformer un enregistrement (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;Cette approche peut servir à exporter tous les champs d'une table vers des formats comme le CSV. Deux précautions :
- L'objet obtenu contient, outre les champs désignés par leur libellé, les clés techniques
Id,ID,idet_node, et ses valeurs sont brutes (une date, par exemple, y est un nombre de millisecondes). Écartez ces clés pour un export. - Le bloc
#{ … }#ne s'exécute que dans le navigateur où Ninext est chargé : dans undo as serverou dans un déclencheur de table (après création, après modification), il reste sans effet. L'onglet Erreurs de Ninext le signale.
Boucle while
Les boucles While sont simples et ne renvoient aucune valeur. Elles servent uniquement à effectuer des tâches répétitives et ne peuvent pas servir à construire des tableaux.
Exemple :
var a := 1;
while a < 10 do
a := a + 1;
end;