0

Doppelte Einträge im Betriebskalender

Ich erzeuge einen Betriebskalender über ein Script aus einem Schalterfeld. 

do as server
  let da := Von;
  let whiler := true;
  while whiler do
    let createBk := (create Betriebskalender);
    createBk.(Datum := da);
    da := da + 1;
    whiler := Bis >= da
  end
end

"Von" und "Bis" sind Datumsfelder in einem Dashboard,  die Beginn und Ende des Kalenders festlegen. 

Nach Klick, wird der Betriebskalender gefüllt. Aber: Der 25.10.2020, der 31.10.2021 der 30.10.2022 , der 29.10.23 und der 27.10.24 werden doppelt in die Tabelle eingetragen.   Also bisher immer irgende ein Sonntag im Oktober, der doppelt erscheind. Ich seh bei mir aber keinen Fehler! Hat jemand eine Idee? Danke! 

3 Antworten

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

    Hallo, die doppelten Datumseinträge sind die Wechsel von Sommer- auf Winterzeit. Versuch es mal mit date() beim Erhöhen des Datumswertes um einen Tag:

     

    do as server
        let da := Von;
        let whiler := true;
        while whiler do
            let createBk := (create Betriebskalender);
            createBk.(Datum := da);
            da := date(year(da), month(da), day(da) + 1);
            whiler := Bis >= da
        end
    end

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ja, das mit Sommerzeit ist immer Murks. Und die Lösung mit date () hat bis jetzt immer funktioniert. Ich würde allerding die Schleife anders organisieren.

    ---
    for i in range(days(Von,Bis) do
    create Betriebskalender.(Datum:=date(year(Von),month(Von),day(Von)+i))
    end
    ---

    So verhindert man mehrere Vergleiche in der Schleife.

    Leo

    • Inhaber
    • Hansluebken
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke @Copytexter! Problem verstanden. @Leo: Schöne Lösung. Die nehme ich! :-)