0

Positionieren in einer Liste

Für eine mit den Kalendertagen verbundene Anwendung habe ich jeweils pro Jahr eine Liste aller Tage.

Gibt es eine Möglichkeit, per Script die Liste auf dem aktuellen Tag zu positionieren?

Also in der Art:

- Button "aktuelles Datum"

- Ermittlung Datum

- Suche nach passendem Datensatz in der Liste

- Positionierung der Liste auf dem gewünschten Datensatz

6 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Thomas, mir ist nicht ganz klar, was mit "Positionierung der Liste" gemeint ist. Grundsätzlich ließe sich aber mit folgender Befehlszeile der Datensatz mit heutigem Datum finden:

    let myRecord := first(select TABELLE where date(DATUM) = date(today()));
    

    Als Ergebnis würde die Variable myRecord die ID des betreffenden Datensatzes enthalten, welche für weitere Zugriffe auf den Datensatz genutzt werden könnte.

    • Thomas_Schaeben
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo planoxpro,

    soweit passt das.

    Meine Frage zielt darauf, wie ich dann den betreffenden Datensatz in der Liste nach oben (also zumindest in den Sichtbereich bringen kann.

    Mit open würde die Einzeldarstellung geöffnet, Popup hilft wahrscheinlich auch nicht weiter.

    Gibt es eine Möglichkeit, eine Liste bis zum gewünschten Eintrag zu scrollen?

    Danke!

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Thomas Schaeben 

      Ach so, der Eintrag zum heutigen Datum soll in der Liste ganz oben stehen? Die Tabellen sind ja immer nach irgendeinem Feld sortiert, entweder auf- oder absteigend. Wenn wir also nicht gerade am Anfang oder Ende des Jahre sind, wird das aktuelle Datum zwangsläufig irgendwo dazwischen stehen.

      Man könnte höchstens zusätzlich filtern, z. B. auf alle Datumswerte, die gleich oder größer sind als der heutige. Wenn man dann aufsteigend nach Datum sortiert, steht das aktuelle automatisch ganz oben.

      In einer Ansicht ließe sich das bspw. so bewerkstelligen:

      (select TABELLE where date(Datum) >= date(today())) order by Datum
      

      Aber das würde natürlich bedeuten, dass in dieser Ansicht nicht mehr alle Daten angezeigt würden, sondern nur die ab heute.

      Weitere Möglichkeit: Man legt in der Tabelle ein Formelfeld mit folgendem Code an:

      if date(Datum) = date(today()) then 0 else number(Nr) end
      

      Dann blendet man dieses Formelfeld in der Ansicht ein und lässt die Tabelle danach sortierten. Wobei es für das "else" verschiedene Möglichkeiten gäbe. Aber auch in diesem Fall stünde das jeweils aktuelle Tagesdatum ganz oben.

    • Thomas_Schaeben
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Vielen Dank für die Anregungen!

    Am besten gefällt mir die Lösung über das Formelfeld.

    Damit könnte ich z. B. zur Erhaltung des Kontextes eine Woche zurück und zwei in die Zukunft mit kennzeichnen und damit sortieren oder ein- bzw. ausblenden.

    Ich sehe aber auch, dass es keine Lösung per Scriptkommando zum „Spulen“ in einer längeren Liste gibt; schade!

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Thomas Schaeben Keine Ursache. Zum "Spulen": Ich weiß ja nicht, welche Absicht damit verbunden ist. Wenn es aber nicht nur ums Sehen, sondern ums Öffnen des Datensatzes geht, dann gäbe es ja auch noch andere Möglichkeiten.

    • Thomas_Schaeben
    • vor 1 Jahr
    • Gemeldet - anzeigen

    In den Tabellenfeldern stecken alle nötigen Infos.

    Es geht nur um die Übersicht, also das Sehen. Ich werde aber den Tipp mit dem Formelfeld umsetzen und die Ein-/Ausblendung per Buttons vornehmen, ggf. mit einem Auswahlfeld für den anzuzeigenden Bereich.