0

Zeitfenster für weitere Einträge sperren

Über folgende Funktion befülle ich eine Untertabelle mit Terminen:

let my := this;
let P := Projekte;
let myTermin := appointment(datetime(Datum + Von), Bis - Von);
let myVon := start(myTermin);
let myBis := endof(myTermin);
if Datum = null or Von = null or Bis = null then
alert("Es fehlen leider noch Werte, bitte eingeben: DATUM, VON, BIS")
else
let new := (create Termine);
new.(Termin := myTermin);
new.(ToDos := my);
new.(Projekte := P);
new.(Status := 1)
end

 

Nun möchte ich gerne eine Funktion hinzufügen, um zu prüfen ob der Termin bereits anderweitig verplant wurde. Ist das Zeitfenster verfügbar, wird eingetragen, wenn nicht dann 

alert("Es gibt Terminüberschneidungen!")

 

Wie mache ich das? Vielen Dank!

3 Antworten

null
    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Reinhard,
    Ohne geprüft zu haben:

    ---

    let my := this;
    let P := Projekte;
    let myTermin := appointment(datetime(Datum + Von), Bis - Von);
    let myVon := start(myTermin);
    let myBis := endof(myTermin);
    if Datum = null or Von = null or Bis = null then
    alert("Es fehlen leider noch Werte, bitte eingeben: DATUM, VON, BIS")
    else
    if cnt(select Termine [not(myBis<start(Termin) or myVon>endof(Termin))])!=0 then
    alert("Es gibt Terminüberschneidungen!")
    else
    let new := (create Termine);
    new.(Termin := myTermin);
    new.(ToDos := my);
    new.(Projekte := P);
    new.(Status := 1)
    end
    end

    ---

    Leo

    • Reinhard
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Funktioniert genial, Leo. Durch einen kleinen Zusatz kann ich auch noch den Sachbearbeiter prüfen "ausgeführt von" lassen. 

     

    let my := this;
    let P := Projekte;
    let myTermin := appointment(datetime(Datum + Von), Bis - Von);
    let myVon := start(myTermin);
    let myBis := endof(myTermin);
    let myC := my.'ausgeführt von';
    if Datum = null or Von = null or Bis = null then
    alert("Es fehlen leider noch Werte, bitte eingeben: DATUM, VON, BIS")
    else
    if myC = 0 then
    alert("Dein Team ist unvollständig, bitte lege eine ausführende Person fest.")
    else
    if cnt((select Termine)[not (myBis < start(Termin) or myVon >= endof(Termin)) and myC = 'ausgeführt von']) != 0 then
    alert("Es gibt Terminkonflikte bei der ausführenden Person.")
    else
    let new := (create Termine);
    new.(Termin := myTermin);
    new.(ToDos := my);
    new.(Projekte := P);
    new.(Status := 1)
    end
    end
    end

     

    Schön ist auch, dass die Prüfung unabhängig vom Projekt erfolgt, dh. immer sobald der Kontakt verplant ist, kommen entsprechende Hinweise.

    Der Export einer .csv Datei klappt auch schon um die Termine in eigenständige Google Calender zu importieren und so Kalender zu syncen.

     

    Besten Dank für diese großartige Software und das tolle Forum!

    • Markus_Weise
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo zusammen,

     

    bei mir funktioniert das irgendwie nicht. Ich kann mir aber nicht ganz erklären warum. Bei mir kommt der alert immer, egal ob ein Termin um die Zeit ist oder nicht, selbst an Tagen, wo gar kein Termin ist. Woran könnte das liegen?

    Fahrdauer := time(number(gcode.result.first(rows).first(elements).duration.value) * 1000);
    Abholzeit := if Fahrdauer != null then
    Ankunftszeit - Fahrdauer - 300000
    end;
    let myStart := datetime(Datum, Abholzeit);
    let myEnd := myStart + Fahrdauer + 300000 + Wartezeit;
    let my := this;
    let myTermin := appointment(datetime(Datum + Abholzeit), myStart + Fahrdauer + 300000 + Wartezeit);
    let myVon := start(myTermin);
    let myBis := endof(myTermin);
    if Datum = null or Abholzeit = null or Ankunftszeit = null then
    alert("Es fehlen leider noch Werte, bitte eingeben: DATUM, VON, BIS")
    else
    if cnt((select Fahrten)[not (myBis < start(Termin) or myVon > endof(Termin))]) != 0 then
    alert("Es gibt Terminüberschneidungen!")
    else
    alert("Nix");
    Termin := appointment(myStart, myEnd)
    end

    Ich habe versucht, die Funktion mit meinem bisherigen Code zu "verheiraten", habe aber den Fehler nicht gefunden. Mit der bisherigen Funktion wurde aus einem Datum und zwei Zeiten der Termin erzeugt. Über Hilfe würde ich mich sehr freuen.