0

Buttons

Ninox-Skripte, die durch Buttons (oder bei Klick auf ein Formelfeld) ausgelöst werden, laufen im Kontext des Clients und nicht als Transaktion. Das heißt, Ninox führt Befehl für Befehl separat aus, als hätte der Nutzer diese Eingaben getätigt.

Daraus ergeben sich folgende Konsequenzen:

  • Die Ausführungszeit kann lange dauern, wenn viele Befehle ausgeführt werden, da Client und Server permanent untereinander Daten austauschen müssen.
  • Das Script kann mittendrin abgebrochen werden, zum Beispiel indem man das Browser-Fenster schließt.
  • Während der Script-Ausführung können auch Datenänderungen von anderen Nutzern auftreten.

Um dies zu optimieren, können alle Befehle in einer Transaktion geklammert werden mit do as transaction. Die Ausführung erfolgt dann in einer einzigen Transaktion auf dem Server (Web-Version) oder in der Client-Datenbank (native Apps). Mit do as server erzielt man einen ähnlichen Effekt, erzwingt aber die serverseitige Ausführung auch in den nativen Apps.
In der Regel laufen Skripte innerhalb von do as server erheblich schneller ab. Im Gegenzug sind aber die Einschränkungen im Abschnitt Transaktionen zu beachten. 

💡  Trigger (z.B. bei Änderung von Daten) werden automatisch innerhalb der ändernden Transaktion ausgeführt - analog zu do as transaction.

Antwort

null