do as server ... end
hier möchte ich das Thema Server-Client erläutern.
in den Cloud und Server Versionen können Berechnungen sowohl am Server als auch am Client ausgeführt werden. In der Regel ist es so, dass die Befehle an den Schaltflächen als Client ausgeführt werden und die Trigger direkt am Server laufen. Die Client-Berechnungen laufen viel langsamer als die vom Server. Ich hatte Mal eine Anwendung, welche mit dem Knopfdruck eine ziemlich komplizierte Berechnung in mehreren Untertabellen durchführen musste. die Berechnung dauerte 1 Minute. Damals hatte ich die Formel in einen Trigger "nach Änderungen" bei einem "Ja/Nein" Feld gepackt und bei der Schaltfläche die Formel geschrieben:
---
if 'Ja/Nein'=true then 'Ja/Nein':=false else 'Ja/Nein':=true
---
Das Ergebnis war - 2 Sekunden statt 1 Minute.
Mit dem "do as server … end" braucht man die Umstellung auf Trigger nicht mehr.
13 Antworten
-
Hey Leo, funktioniert das auch mit der Ninox Server Version. Bist du heute auch aus dem Webinar geflogen wo es mit Birger weiter gehen sollte?
LG Basti -
Hallo Basti,
Die neue Server Version ist noch nicht da, und die alte unterstützt die neuen Befehle noch nicht.
Ja ich bin da auch rausgeflogen. Bin dann zu den englischen Treffen gegangen und dort zu Ende gehört. -
Ich hab den Befehl mal auf einem Button getestet in der Cloud, funktioniert aber leider nicht. Geht das nur bei einem Trigger?
-
Hier ist die Datenbank
https://www.dropbox.com/s/4iam9j4052vhtsh/SERVER%20VS%20CLIENT-2.ninox?dl=0
dort werden in der Untertabelle 100 Datensätze hinzugefügt.
Funktioniert in Mac und Cloud.
In Cloud sieht man deutlich, wo die Unterschiede liegen (15 Sekunden gegen 145 Millisekunden) -
Also in deinem Beispiel funktioniert der do as server Befehl nicht immer mal funktioniert er mal nicht. Hab jetzt den Button mehrmals versucht zu drücken, bzw einen neuen Datensatz angelegt und die Messung wiederholt mal führt er ihn aus mal nicht, zumindest in der Ninox Client app.
-
Da muss ich dir widersprechen. Bei App ist die Geschwindigkeit von der Synchronisation mit Server abhängig. die Formel funktionier immer, aber die 100 Datensätze müssen erst vom Server auf deine App geladen werden. achte einfach auf Wolkensymbol oben links. Manchmal ist dort ein Pfeil, manchmal ein Ausrufezeichen, und es dauert ein paar Sekunden, bis die Werte sich aktualisieren.
-
Hab es gerade nochmal getestet. Also manchmal erscheint bei der Wolke ein Ausrufszeichen welches wieder verschwindet und manchmal macht er den Befehl und es tut sich garnichts noch nicht mal auf der Wolke erscheint was. Ich kann den Befehl erst nochmal ausführen wenn ich die Datenbank schließe. Hab es auch mal mit einem Hotspot von meinem Smartphone versucht, selbes Problem. Auch von einem anderen Rechner selbes Problem. Werde es kommende Woche mal in einem anderen WLAN testen.
-
Ich habe da auch noch eine Frage dazu...
ist es möglich in einem projekt den status zu automatisieren ob die DB als client oder als web based cloud Variante ausgeführt wird.
in der Art
if web based cloud then do as server
Viele liebe Grüße!
-
hallo Martin, es gibt ein operator ninoxApp() => "mac" | "ipad" | "iphone" | "web",
vermutlich gibt es auch für Android ein Rückgabewert, den kenne ich leider nicht. Also deine Formel wäre dann:
if ninoxApp() = "web" then do as server
Leo
-
Absolut der Knaller
Danke Leo, werde ich gleich testen..
-
melde mich nochmals zurück...
da müssen aber alle nachfolgenden Anweisungen im IF Statement enthalten sein und das ganze nochmals hinter ELSE oder irre ich mich..
-
Problem gelöst...
if ninoxApp() = "web" then
do as server <script>
else
<script>
end
sprich das Script muss zwei mal exakt gleich eingesetzt sein. Danke nochmals LEO
-
if ninoxApp() = "web" then
do as server <script>end
else
<script>
end
so passt es..
Content aside
- vor 5 JahrenZuletzt aktiv
- 13Antworten
- 4658Ansichten
-
1
Folge bereits