Powtarzanie czynności: for i while
Pętla powtarza czynność: przejście przez wszystkie faktury klienta, by je zsumować, utworzenie jednego wiersza na miesiąc, sprawdzenie każdego rekordu tabeli…
Pętli for można użyć do wykonania kodu i/lub zwrócenia tablicy wartości. Typ zwracanej tablicy odpowiada typowi ostatniej instrukcji między do a end.
Pętla for
Pętla po zakresie liczb:
Ninox
for i from 1 to 10 do
i;
end;Pętla po tablicy:
Ninox
var myArray := [1, 3, 5, 7];
for i in myArray do
i;
end;Pętla po kluczach i wartościach obiektu 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;Jak operować na zmiennych JSON w Ninox, opisano tutaj: Praca z danymi JSON.
To samo można również zrobić z rekordem, ale trzeba użyć natywnego JS z Ninext, aby zamienić rekord (nid) w 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;Takie podejście bywa przydatne przy eksporcie wszystkich pól tabeli do formatów takich jak CSV. Dwie uwagi:
- Uzyskany obiekt zawiera, oprócz pól wskazanych przez ich etykietę, klucze techniczne
Id,ID,idi_node, a jego wartości są surowe (data jest w nim na przykład liczbą milisekund). Przy eksporcie należy pominąć te klucze. - Blok
#{ … }#wykonuje się tylko w przeglądarce, w której załadowany jest Ninext: wdo as serverlub w wyzwalaczu tabeli (po utworzeniu, po modyfikacji) nie daje żadnego efektu. Sygnalizuje to karta Błędy Ninext.
Pętla while
Pętle While są proste i nie zwracają żadnej wartości. Służą wyłącznie do wykonywania powtarzalnych zadań i nie można za ich pomocą budować tablic.
Przykład:
Ninox
var a := 1;
while a < 10 do
a := a + 1;
end;