0

Zeitraum zwischen zwei Daten

Ich habe eine Patiententabelle mit einer Untertabelle für die Dokumentation der einzelnen Sitzungen. Wird ein neuer Eintrag erstellt wird eine Sitzung hinzugefügt. Per cnt-Befehl zählt Ninox alle bisherigen Einträge zu dem Patietenn +1 und nummiert so die Sitzungen durch. Es wird auch immer ein Datum vergeben. Meine Frage wäre: Wie kann ich beim Erstellen eines neuen Eintrages ausrechnen lassen, ob zwischen dem letzten und dem aktuellen Datum mehr als 8 Tage liegen. Es soll dann ein Alert erscheinen und darauf hinweisen. Ich dachte daran, dass man wieder per cnt-Befehl alle Datensätze des Patienten zählt aber dann bekomme ich ja nur eine Zahl. Ich brauche aber das Datum aus diesem Datensatz. Ich stehe derzeit auf dem Schlauch wie ich das Datum des vorherigen Datensatzes auslese um dann damit zu arbeiten. Hat jemand eine Idee?

9 Antworten

null
    • Dirk_Patzer
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Mit last(... bekomme ich den letzten Datensatz. Ich brauche aber den Vergleich zwischen dem gerade erstellten Datum des Datensatzes mit dem Datum des Eintrags davor. Die Formel soll quasi überprüfen, ob zwischen dem aktuellen Datum und dem Datum des letzten Datensatzes mehr als 1 Woche liegt (oder eben > 7 Tage). Mir fehlt aber der Zugrif auf das Datum des Datensatzes aus der Vorwoche. Mit concat habe ich es auch versucht, was mir ein Array macht aber wie ich dann auf den vorletzten Wert zugreife ist mir auch nicht klar aber vielleicht ist das auch der falsche Weg. 

    • bernd
    • vor 6 Jahren
    • Gemeldet - anzeigen

    ler ADA := aktuellesDatum; ( hier das Datum vom aktuellen Datensatz (last) eintragen)

    last(select Tabelle where Datum < ADA); mit der where Anweisung wird der letzte Datensatz ausgefiltert

    • Dirk_Patzer
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Danke! So könnte es theoretisch gehen. Bekomme aber noch diese Fehlermeldung:Bildschirmfoto 2018-11-09 um 11.20.36

    • bernd
    • vor 6 Jahren
    • Gemeldet - anzeigen

    in Zeile 2 fehlt hinten das Feld, wo das Datum ausgelesen werden soll...

    • Dirk_Patzer
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Klappt leider auch nicht .'Datum Doku'; am Ende nicht. Eigentlich braucht man das ja auch nicht, weil in der select-Anweisung alles drin steht. Es werden dort alle Datumsfelder ausgelesen, deren Datum kleiner ist als myDatum und mit last wird eben nur das letzte genommen. Sprich, wenn man 07.11.18, 08.11.18 und 09.11.18 hat, dann sollte Zeile 1 den 09.11.18 auswerfen und Zeile 2 den 08.11.18. Wobei ich mir auch nicht sicher bin, ob die Select-Anweisung nicht noch "wissen" muss, von welchem Patienten die Daten gezogen werden, da sonst alle Datums-Angaben ausgewählt werden. Da muss ich aber noch mal schauen. Auf jeden Fall bleibt bei mir diese Fehlermeldung wie im obigen Bild.

    • bernd
    • vor 6 Jahren
    • Gemeldet - anzeigen

    die Select-Anweisung ansich ist nur ein "Filter", da muß bestimmt auch noch nach dem Parienten gefiltert werden.

    Es soll ja auch ein Datum zurückgegeben werden, also fehlt am Ender der Zeile das Datumsfeld. Auch wenn diesen mit in der Anweisung steht, hat nichts damit zu tun...

    so wie es oben geschrieben ist, gibt die Select-Anweisung del letzten kompletten Datensatz zurück...

    • Dirk_Patzer
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Mit 

    let myDatum2 := last((select Verordnungen).'Dokumentationsmappe für diese VO'['Datum Doku' < myDatum]).'Datum Doku';

    wirf er mir nun ein Datum aus. Irgendwie ging es mit where nicht. Jetzt muss ich noch schauen, wie ich das mit dem Patienten hinbekomme. Sollte aber machbar sein. Ohne select geht es wohl nicht. Dachte so wie ich Zeile 1 den letzten Eintrag erhalte, könnte ich irgendwie auch den Eintrag davor herausfinden. In der ersten Zeile habe ich ja noch (da ohne select) die Verknüpfung zum Patienten. 

    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Das geht auch ohne select bei verknupften Tabellen. Ich kenne dein Datenmodell nicht aber bei zwei Tabellen und Datumsfeld in der Untertabelle wäre die Formel für myLastDate:

    ---

    let myDate:=Datum;

    let myLastDate:=max(Haupttabelle.Untertabelle[Datum<myDate].Datum)

    ---

    Leo

    • Dirk_Patzer
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Vielen Dank Leo!

    let myDate := last('Dokumentationsmappe für diese VO').'Datum Doku';
    let myLastDate := max('Dokumentationsmappe für diese VO'['Datum Doku' < myDate].'Datum Doku');
    myLastDate

    So klappt es perfekt und auch für jeden Patieten einzeln, da ohne select und bestehender Verknüpfung. Der max-Befehl war mir bisher noch nicht geläufig, bzw. wusste ich nicht, dass das auch mit einem Datumswert funktioniert. In Zeile 1 wird das letzte Datum gezogen. In Zeile 2 schaut Ninox nach dem größten Datum, dass kleiner ist als myDate.

    Danke, Danke, Danke an euch beide!

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 9Antworten
  • 3259Ansichten