0

do as server ... end

Hallo zusammen,
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

null
    • Ninox Premiumpartner
    • Bastian_Vorholt
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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.
    • Ninox Premiumpartner
    • Bastian_Vorholt
    • vor 6 Jahren
    • Gemeldet - anzeigen
    Ich hab den Befehl mal auf einem Button getestet in der Cloud, funktioniert aber leider nicht. Geht das nur bei einem Trigger?
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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)
    • Ninox Premiumpartner
    • Bastian_Vorholt
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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.
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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.
    • Ninox Premiumpartner
    • Bastian_Vorholt
    • vor 6 Jahren
    • Gemeldet - anzeigen
    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.
    • Martin_K
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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! 

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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

    • Martin_K
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Absolut der Knaller

     

    Danke Leo, werde ich gleich testen..

    • Martin_K
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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..

    • Martin_K
    • vor 5 Jahren
    • Gemeldet - anzeigen

    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

    • Martin_K
    • vor 5 Jahren
    • Gemeldet - anzeigen

    if ninoxApp() = "web" then

    do as server <script>end

    else

    <script>

    end

    so passt es..

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 13Antworten
  • 4602Ansichten
  • 1 Folge bereits