0

Previous und Next Record

Ich dachte, dies sei eigentlich eine einfache Aufgabe, aber anscheinend gibt es zur Auswahl eines vorhergehenden, folgenden Datensatz keine Funktion. Ich möchte eigentlich nur in einem Formularfeld auf einer Tabellenseite (Page) die Differenz eines Zahlenwertes zwischen dem letzten Datensatzes mit dem vorherigen Datensatz berechnen und anzeigen lassen. Wie kann ich auf einen vorherigen Datensatz zugreifen? Wahrscheinlich sehr banal, aber bisher hatte ich keinen Erfolg mit Vorschlägen hier oder durch ChatGPT etc.. Danke euch!

4 Antworten

null
    • mirko3
    • gestern
    • Gemeldet - anzeigen

    Du könntest es so machen. Die Tabelle wird umgedreht nach Datensatznummer geordnet, dann die ersten beiden Records über slice() ausgeschnitten, dann über item() der vorletzte vom letzten subtrahiert. Feldname und Tabellenname mußt du natürlich ändern. Mirko

    let values := slice((select TABELLE) order by -number(Nr), 0, 2);
    item(values, 0).FELD - item(values, 1).FELD
    
      • Volker_Damann
      • gestern
      • Gemeldet - anzeigen

       Danke für die schnelle Antwort. Da gibt es in Ninox ja wirklich viele Wege zum Ziel - wie einfach wäre doch eine entsprende fest eingebaute Funktion... Ich habe es aber jetzt auch geschafft mit folgender Lösung, wobei es in meiner Anwendung Sinn macht, ein Datum als Such-Merkmal zu verwenden:

      let current := last(select Tabelle1);
      let previous := last((select Tabelle1 where 'Datum' < current. 'Datum') order by 'Datum');

    • Eulamie_Esclamada
    • gestern
    • Gemeldet - anzeigen

    danke Leute , aber ich versteh nur Bahnhof. ich habe die Formel genommen die vorhanden war und nur die Felder die mir wichtig waren geändert. wie gesagt hat funktioniert aber die letzte reg mit 10 und seit dem gehts nicht weiter...wie soll ich es genau ändern als Anfänger..und leihe

      • Volker_Damann
      • vor 16 Stunden
      • Gemeldet - anzeigen

       Hallo! Also Mirkos Verfahren ist sicher etwas fortgeschritten und elegant. Als Erklärung zu meiner Lösung (extra simpel und vielleicht redundant und wenig elegant): Ich habe eine Tabelle (Tabelle1) die ein Feld "Datum" enthält und die Datensätze sind aufsteigend nach Datum sortiert, also das neueste Datum ist im letzten, aktuellen Datensatz. Ich habe dann z.B. noch ein Feld "Zahl", die ich verwenden will, um von der "Zahl" im aktuellen Datensatz die "Zahl" im vorherigen Datensatz z.B. abzuziehen, also um die Differenz zu erhalten. Dazu wähle ich erstmal den letzten (aktuellen) Datensatz aus:

      let current := last(select Tabelle1);

      und könnte nun z.B. die "Zahl" aus dem aktuellen Datensatz zwischenspeichern:

      let cur := current.'Zahl'

      Dann muss ich den vorhergehenden Datensatz auswählen mit:

      let previous := last((select Tabelle1 where 'Datum' < current. 'Datum') order by 'Datum');

      Dazu wird die Tabelle nach "Datum" aufsteigend sortiert --> order by 'Datum'

      Es wird in allen Datensätzen das Datum mit dem aktuellen Datum "current.'Datum' " verglichen durch where  "alle Datensätze nacheinander" 'Datum' < current.'Datum'. Es kann also nur der vorletzte Datensatz in der Tabelle diese Bedingung erfüllen und ist somit der letzte Datensatz, den ich mit der Funktion last() auswähle und das Ergebnis dann in previous speichere.

      Nun kann ich mit previous.'Zahl' die Zahl auslesen und ggfs. einer Variablen zuweisen:

      let prev := previous.'Zahl'

      um dann z.B. Rechenoperationen durchzuführen, wie: let result := cur - prev, welches man z.B. in einem Formularfeld anzeigen kann.

      Noch ein Hinweis: in Ninox gibt es meines Wissens nach keine Möglichkeit in einem Skript /Formel mit einem Keyword (asc oder desc) aufsteigend oder absteigend zu sortieren. Es gibt also nicht die Form:
      "order by 'XY' desc". Um das zu erreichen, muss man den Wert nach dem sortiert werden soll, negieren, also, wie bei Mircos Variante: "order by -number". So könnte man dann auch z.B. ein Skript für die Auswahl des nächsten Datensatzes erstellen.

      Ich hoffe, das hat Dir geholfen. Leider muss ich sagen, dass ich die Dokumentation leider nicht optimal finde und es sehr mühsam ist, sich durch Foreneinträge, Videotutorials durchzuwühlen. Ich frage mich schon lange, warum es z.B. von Verlagen wie Rheinwerk keinerlei Ninox Handbücher und Dokumentationen gibt.

Content aside

  • vor 16 StundenZuletzt aktiv
  • 4Antworten
  • 34Ansichten
  • 3 Folge bereits