0

Frage zur Berechnung von Zeiträumen

Moin zusammen,

ich suche eine Möglichkeit, die es bei einem so flexiblen Werkzeug wie Ninox sicherlich gibt, einen Zeitraum abzufragen und eine AKtion daraus auszuleiten.

Gegeben ist eine DB mit einem Dateum, z. B. 25.5.2010

Ferner eine DB mit folgendem Aufbau:
Jahr - Periode - Datum Anfang - Datum Ende
2010 - Sommer - 1.5.2010 - 10.9.2010

Mein Ziel ist anhand des Datums in der ersten Tabelle in der zweiten zu schauen in welcher Periode das angegeben Datum liegt.
Dann soll in die erste Tabelle der Wert aus dem Feld "Periode" und "Jahr" in ein Feld zusammen zurück gegeben werden.

Ziel ist es anhand des Datums die Fahrplanperiode als "Sommer 2010" in das ersten DB zu erhalten.

Wie lässt sich das umsetzen?

Vielen Dank und schöne Grüße
Ulrich

4 Antworten

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

    Moin Ulrich, das ginge z. B. mit einem Funktionsfeld namens 'Fahrplanperiode' (o. ä.) und folgendem Code:

    let myDatum := Datum;
    let FPP := first(select TABELLE2 where 'Datum Anfang' <= myDatum and 'Datum Ende' >= myDatum)
    FPP.Periode + " " + FPP.Jahr

    Diese Berechnung wird dann allerdings immer wieder durchgeführt. Wenn es also in erster Linie um zurückliegende Daten geht, dann sollte man den ermittelten Wert lieber per Trigger oder Button in ein Datenfeld schreiben.

    • Ulrich_Behning
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Moin,

    vielen Dank, das klappt.

    Eine Frage noch, wie erreiche ich es, dass das berechnete Feld leer blaibt wenn im Feld Datum in der ersten DB kein Datum steht?

    In der jetzigen Form wird immer der letzte Datensatz aus der zweiten DB genommen.

    Danke & Gruß

    Ulrich

    • Torsten_Stang.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Moin,

     

    if Datum then
       let myDatum := Datum;
       let FPP := first(select TABELLE2 where 'Datum Anfang' <= myDatum and 'Datum Ende' >= myDatum)
       FPP.Periode + " " + FPP.Jahr
    else
       ""
    end

     

    lg Torsten

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

    Einfach ne Abfrage davorsetzen, ob das Feld leer ist ("if Datum" ist die Kurzform von "if Datum != null"):

     

    if Datum != null then
        let myDatum := Datum;
        let FPP := first(select TABELLE2 where 'Datum Anfang' <= myDatum and 'Datum Ende' >= myDatum)
        FPP.Periode + " " + FPP.Jahr
    end

    Man kann auch noch eine zweite Abfrage einbauen für den Fall, dass der gesuchte Datumswert nicht exisitiert:

    if Datum != null then
        let myDatum := Datum;
        let FPP := first(select TABELLE2 where 'Datum Anfang' <= myDatum and 'Datum Ende' >= myDatum)
        if FPP then

            FPP.Periode + " " + FPP.Jahr
        else

            "Datum nicht gefunden!"

        end

    end