0

Aktuellstes Datum mit mehreren Bedingungen abfragen

Hallo,

leider komme ich bei folgendem Problem nicht mehr weiter:

Ich habe eine Tabelle "Personen" in dieser befindet sich eine Untertabelle "Untersuchungen", hier gibt es ein Datumsfeld "Datum nächste Untersuchung". In der Untertabelle ist eine Verknüpfung zu der Tabelle "Übersicht Untersuchungen", hier gibt es ein Textfeld "Untersuchungen Abkürzung" z. B. G25 oder G37.

Es gibt somit zu einer Person mehrere Einträge in "Untersuchungen" z. B.:

G25 am 01.01.2022

G25 am 01.01.2023

G37 am 01.02.2022

G37am 01.02.2023

usw.

Ich möchte gerne mit einem Berechnungsfeld in der Tabelle "Personen" das aktuelle Datum des Datumsfeld "Datum nächste Untersuchung" aus der Tabelle "Untersuchungen" in Abhängigkeit der Abkürzung (G25 oder G37) mir anzeigen lassen.

Mein Versuch sieht aktuell so aus:

let my := this;
let myPERSON := 'Nr.';
let myVORSORGE := Untersuchungen.'Auswahl Untersuchungen';
max((select Untersuchungen)[myVORSORGE = "G25" and myVN = Personen.'Nr.'].'Datum nächste Untersuchung')

Befindet sich nur ein Eintrag in der Tabelle Untersuchungen mit Kürzel G25 klappt es, kommt ein zweiter hinzu, bleibt das Feld leer.

Vorab vielen Dank!

6 Antworten

null
    • Heming_HESACO
    • vor 2 Jahren
    • Gemeldet - anzeigen

    so sieht die Funktion aktuell aus:

    let my := this;
    let myPERSON := 'Nr.';
    let myVORSORGE := Untersuchungen.'Übersicht Untersuchungen'.'Abkürzung';
    last((select Untersuchungen)[myVORSORGE = "G25" and myPERSON = Personen.'Nr.']).'Datum nächste Untersuchung'

    Problem bleibt bestehen: bei mehreren Einträgen, bleibt das Feld leer.

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Wie ich es verstanden habe vielleicht so:

     

    concat(Untersuchungen['Übersicht Untersuchungen'.'Abkürzung' = "G25"].'Datum nächste Untersuchung')

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG Wenn nur die zukünftigen Termine (> Heute) und auch noch aufsteigend sortiert angezeigt werden sollen:

      let P := (Untersuchungen order by 'Datum nächste Untersuchung');
      concat(P['Datum nächste Untersuchung' > today() and 'Übersicht Untersuchungen'.'Abkürzung' = "G25"].'Datum nächste Untersuchung')

    • Heming_HESACO
    • vor 2 Jahren
    • Gemeldet - anzeigen

    so funktioniert es:

    max(Untersuchungen['ÜbersichtUntersuchungen'.'Untersuchungen Abkürzung' = "G25"].'Datum nächste Untersuchung')

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Julian Mit max() zeigt er dir aber nur den maximalen (letzten) Termin an. Wenn ein Termin vor max() existiert, der auch in der Zukunft liegt, wird dieser nicht in der Tabelle angezeigt. Da müsstest du dann eher first() anstelle von max() benutzen, damit der erste Termin, der die Anforderungen erfüllt angezeigt wird.
      Aber du kennst deine Anforderungen besser als ein Außenstehender.

      • Heming_HESACO
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG ok danke dir. Das werde ich noch anpassen.

      Jetzt wollte ich noch das Datum farblich kenntlich machen. 

      let AnzahlTage := days(today(), 'Datum nächste G25');
      let Farbe := switch AnzahlTage < 31 do
          case AnzahlTage < 30 and AnzahlTage >= 20:
              "Yellow"
          case AnzahlTage < 20 and AnzahlTage >= 10:
              "Orange"
          case AnzahlTage < 10 and AnzahlTage >= 3:
              "Red"
          case AnzahlTage < 3:
              "Darkred"
          default:
              "Green"
          end;
      styled(text('Datum nächste G25'), Farbe)

      Sobald es aber mehr als 31 Tage sind, bleibt das Feld gelb. Es wird also nicht grün?