0

Bug? Lokale Datenfelder werden nicht in Get-Befehlen verwendet

Hallo zusammen, 

der Fehler kann wie folgt nachgestellt werden: 

Erstelle eine Seite mit einem Textfeld "Globale Variable im Speicher (Browser)".

Wenn ich ein "Formelfeld" mit 

Element

mache, dann wird das Element in dem Formelfeld dargestellt. 

Wenn ich jedoch das Formelfeld in einem Get-Feld verwenden möchte, dann wird der Wert nicht übergeben. Woran könnte das liegen? 

let response := do as server        http("GET", Formelfeld, {}, null)    end;

4 Antworten

null
    • UweG
    • vor 3 Tagen
    • Gemeldet - anzeigen

    Weil das Formelfeld kein Datenfeld ist und somit keinen Inhalt besitzt. Es verweist innerhalb des Browsers auf den als globale Variable gespeicherten Wert.
    Wenn du es innerhalb  do as ... benutzt, wird die Referenz des Formelfeldes ausgeführt und da diese (Textfeld) Serverseitig leer ist, kann kein Wert übertragen werden.

      • P_Alb
      • vor 2 Tagen
      • Gemeldet - anzeigen

       Wunderbar. Danke vielmals für deine Erklärung. Dass das so ist ist natürlich logisch und einleuchtend. Das wissen hätte mir einige Stunden Bug-Suche erspart.

      Das in der Dokumentation von Ninox zu finden, wäre natürlich auch phänomenal. ;-)

       

      Oder: Dass eine Fehlermeldung im Editor entsteht, wenn man innerhalb do as server oder do as deferred sich auf ein Formelfeld bezieht anstelle eines "harten" Feldes.

      Aufgrund der langsamen Abarbeitung im Browser werden oftmals bei uns im System Informationen von externen Systemen lediglich als JSon in einem Datenfeld abgelegt und dann über parseJSON(JsonFeld).xyz in einem Formelfeld angezeigt.

      • UweG
      • vor 2 Tagen
      • Gemeldet - anzeigen

      Berechnungs/Formelfelder sollten ausschließlich für Anzeigen verwendet werden.
      Wenn man mit den Inhalten weiter arbeiten muss, sollte immer ein Datenfeld benutzt werden, welches über Änderungstrigger der entsprechenden Datenfelder, die an der Ergebnisfindung beteiligt sind, gefüllt wird.
      Wie du selbst festgestellt hast, machen Formelfelder, die Datenbank langsam.
      Besonders bei select Abfrage oder in Tabellenansichten, da jedes Formelfeld im Record neu berechnet wird.
      Das kann sich erheblich potenzieren und eine Kaffepause beinhalten bis ein Ergebnis angezeigt wird.
      Auch das füllen von Textfeldern mit grossen Texten kann nachteile haben. Damit kann die History aufgebläht werden, welche dann zum Abzug von verfügbaren Speicher führen kann.

      • P_Alb
      • vor 2 Tagen
      • Gemeldet - anzeigen

       Danke für diese grundlegenden Hinweise. 
      Gibt es die Möglichkeit gewisse Datenfelder von der "History" auszuschließen? (ggf. in zukünftigen releases?)
      Mein Problem ist, dass wir ein Json von extern abrufen mit 100 Datenpunkten pro Eintrag in Ninox. Wenn ich nun 1000 Einträge aktualisieren möchte, muss ich 100000 Felder in Ninox eintragen. Das dauert, zumindest so wie ich die Daten bisher eintrage, in der Browser-Version sehr lange. In der App geht es in Sekunden, im Browser dauert der Aufruf im Zweifelsfall Stunden, selbst wenn ich das Erstellen der Einträge innerhalb eines "do as deferred" mache und die jeweiligen Datenpunkte in einer transaction manipuliere.

Content aside

  • vor 2 TagenZuletzt aktiv
  • 4Antworten
  • 40Ansichten
  • 2 Folge bereits