0

Gleicher Table erneut öffnen

Brauche eine Funktion um den Reiter nach dem schließen erneut zu öffnen.

Wenn ein bestimmter Wert nicht gesetzt wird, sollte sich der gleiche Table erneut öffnen. Dafür setze ich einen Trigger nach dem schließen des Datensatzes - mittels einer If/ else Abfrage wollte ich etwas wie das basteln:

if WertX != true then alert("Wert X Fehlt") and openRecord() end;

Jedoch funktioniert der "openRecord()" part nicht - wie lautet hierfür die Syntax? Ziel ist das der Datensatz quasi erneut geöffnet wird. 

6 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Kundenservice, openRecord() benötigt als Parameter die ID des Datensatzes, der geöffnet werden soll, optional kann auch noch ein bestimmter Karteireiter angegeben werden:

    openRecord(ID【, "Karteireiter"】)
    
      • Aura
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro 

      Ja genau, nur der Karteireiter ist perfekt, heißt in diesem Fall "Overveiw" - aber es scheint als ob ein Fehler vorliegt - woran könnte es liegen? 

      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Kundenservice Die Angabe des Karteireiters ist optional, die der ID zwingend. Und die fehlt noch. Auch das "and" ist fehl am Platze. Ungeachtet der sonstigen Sinnhaftigkeit könnte das, rein von der Syntax her, bspw. so aussehen:

      let myRecord := this;
      if Edit != true then
          alert("Test");
          openRecord(myRecord, "Overview")
      end
      
      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro ,

      Klasse, Danke für den Hinweis.
      Das ich auch direkt einen Karteireiter öffnen kann hatte ich bisher nicht gewußt!
      Ich habs mal in der Reference-DB in die Syntaxbeispiele aufgenommen...

    • Aura
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Jetzt verstehe ich, "myRecord" dient quasi als ID - ohne ID funktioniert das grundsätzlich nicht.

    Einzelne code Zeilen werden nicht mit einem "and"  verknüpft - sondern jede Code- Zeile mit einem Semikolon abgeschloßen.

    Danke vielmals! 

      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Aura 

      Die ID ist eine eindeutige Kennung, die Ninox automatisch jedem Datensatz vergibt, bestehend aus einer Buchstabenkombination für die Tabelle und der Nummer des Datensatzes innerhalb dieser Tabelle. "C13" wäre bspw. der Datensatz Nummer "13" in der Tabelle "C".

      Anhand dieser ID kann man gezielt auf jeden einzelnen Datensatz in der Datenbank zugreifen. Sie wird als Ergebnis verschiedener Datenbankoperationen wie select oder create zurückgegeben, kann in eine Variable übernommen und an anderer Stelle genutzt werden.

      So auch in obigem Beispielcode. Das Schlüsselwort "this" steht für "Dieser aktuell geöffnete Datensatz" und gibt dessen ID zurück. Die Variable myRecord hätte also bspw. die ID "C13" zum Inhalt. Und beim openRecord() kann man dann diese Variable einsetzen, um den betreffenden Datensatz "C13" zu adressieren, ohne die ID selbst zu kennen.

      Wie gesagt: Jeder Datensatz hat eine solche eindeutige ID. Sie wird von Ninox automatisch vergeben, bleibt immer gleich und ist auch nicht manipulierbar. Man kann sie sich anzeigen lassen, indem man ein Formelfeld erstellt und folgendes hineinschreibt:

      raw(this)
      

      Zu "and": Mit den Schlüsselworten "and" bzw. "or" lassen sich bei einer Abfrage mehrere Bedingungen angeben. Beispiel:

      if FeldA = "Trallala" and FeldB > 100 then ...
      

      Um mehrere Funktionen nacheinander auszuführen, schreibt man sie jeweils in eine neue Zeile und schließt diese mit einem Semikolon ab, wie du ja selbst schon richtig erkannt hast.