0

Umstellen von Sommer auf Winterzeit

Ich habe einen Unterrichtskalender mit Terminserien, die einzeltermine in den Kalender generieren.
Um einen gewissen Zeitraum zu löschen benutze ich einen Button im Dashboard mit folgenden Code:
if Von_Datum and Bis_Datum then
let vDat := Von_Datum;
let bDat := Bis_Datum;
let myZ := cnt((select Einzeltermine1)[date(start(Termin)) >= vDat and date(start(Termin)) <= bDat]);
if dialog("Bitte bestätigen", "Sollen " + myZ + " Termine im angegebenen Zeitraum gelöscht werden?", ["Ja", "Abbrechen"]) = "Ja" then
delete (select Einzeltermine1)[date(start(Termin)) >= vDat and date(start(Termin)) <= bDat];
alert(myZ + " Datensätze gelöscht")
end
else
alert("Bitte Von- und Bis-Datum angeben!")
end
Num möchte ich aufgrund der Sommer-Winterzeitumstellung die Termine nicht löschen, sondern um eine Stunde verschieben.
Ich denke, das sollte gehen, wenn ich diese Zeile ersetze:
delete (select Einzeltermine1)[date(start(Termin)) >= vDat and date(start(Termin)) <= bDat];
Hat mir jemand nen Tip wie ich statt delete das Verschieben um 1h hinbekomme?

3 Antworten

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

    Hallo Siskokeys, Idee für den Code anstelle des "delete":

     

    let myA := (select Einzeltermine where date(start(Termin)) >= vDat and date(endof(Termin)) <= bDat);
    for i in myA do
       let myD := date(start(i.Termin));
       let myS := datetime(myD, time(number(time(start(i.Termin))) + 3600000));
       let myE := datetime(myD, time(number(time(endof(i.Termin))) + 3600000));
       i.(Termin := appointment(myS, myE))
    end

     

    Natürlich wie immer ohne Gewähr.

     

    Grüße, Axel

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

    Ach so, wenn Anfangs- und Endzeit des Termine nicht immer am selben Tag sind, dann muss man die Datumswerte getrennt extrahieren:

     

    let myA := (select Einzeltermine where date(start(Termin)) >= vDat and date(endof(Termin)) <= bDat);
    for i in myA do
       let mySD := date(start(i.Termin));
       let myED := date(endof(i.Termin));
       let myST := datetime(mySD, time(number(time(start(i.Termin))) + 3600000));
       let myET := datetime(myED, time(number(time(endof(i.Termin))) + 3600000));
       i.(Termin := appointment(myS, myE))
    end

    • Siskokeys
    • vor 2 Jahren
    • Gemeldet - anzeigen

    You are so great!!
    Da es sich immer um Termine am selben Tag handelt hat Version 1 wunderbar geklappt. Ich muss nur Beginn und Ende der "Winterzeit" in meine Von_Datum und Bis_Datum Felder eingebn und es klappt.
    Nun gibt es natürlich das Problem, wenn ich eine neue Terminserie erstelle, deren Starttermin innerhalb der "Winterzeit" liegt, stimmen diese beim nächsten Wechsel zu Sommerzeit nicht mehr. Nun kann ich diese aber nicht einzeln auswählen da ich dann ja Termine habe die verschoben werden sollen und welche die es eben nicht sollen.
    Ich bräuchte also bei : (select Einzeltermine where date(start(Termin)) >= vDat and date(endof(Termin)) <= bDat) noch eine zusätzliche Variable, ob die Terminserie innerhalb der Winter- oder Sommerzeit beginnt.
    Wenn ich mir eine neue Tabelle mit Winterzeit Anfang und Winterzeit Ende Datumsfeldern mache hätte ich hierfür wohl eine Quelle.
    Und dann wäre das natürlich noch eleganter das ganze in meinen Termine eintragen Code (der glaube ich auch von Dir stammt) einbetten würde:
    let me := this;
    let myDauer := time(number(text(Dauer_Minuten)));
    let myDate := Startdatum;
    let myTermin := appointment(Startdatum + Uhrzeit, time(0, myDauer));
    for i from 0 to Anzahl do
    let newET := (create Einzeltermine1);
    newET.(
    Terminserie := me;
    Termin := myTermin
    );
    myDate := myDate + 'Intervall (Tage)';
    myTermin := appointment(myDate + Uhrzeit, time(0, myDauer))
    end;
    alert(text(Anzahl) + " Termine angelegt!");
    Gesperrt := true

    Müsste dann wohl irgenwo vor let newET := (create Einzeltermine1); reinkommen.

    Grüße Uwe

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 3Antworten
  • 151Ansichten