0

Serienaufgaben erstellen

Hallo liebe Ninox-Skripter,

ich habe ein Problem bei der Erstellung von Serienaufgaben. Die Aufgaben sind im Kalender als Tagesaufgaben gkennzeichnet und werden daher mit einem Datum angelegt. Die erscheinen auch wunderbar im Kalender.

Da ein Azubi immer am gleichen Tag einen in der Schule ist, möchte ich nun einstellen, dass bis zu einem Endedatum immer weitere Aufgaben erzeugt werden.

Dazu habe ich folgende Felder erstellt:

Serientermin (Toggle)

Intervall in Tagen (Zahl)

Endedatum (Datum)

Button "Serie erstellen" mit folgendem Skript:

let '2 Aufgaben' := this;
if not Serientermin then
    alert("Dies ist kein Serientermin!")
else
    var newDate := 'Fällig bis' + 'Intervall in Tagen';
    if Endedatum = null then
        Endedatum := newDate + 365;
        "//-- damit es nicht zu einer Endlosschleife kommt..."
    end;
    while newDate < Endedatum do


    end

end

Was muss in die while do Schleife rein, damit es eine neue Aufgabe gibt? Oder habe ich grundsätzlich einen Konzeptionsfehler?

Habe schon einiges ausprobiert, aber ich bekomme es einfach nicht hin.

5 Antworten

null
    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo hallo. Es könnte etwa so aussehen. Mirko

    let ende := Endedatum;
    let start := 'Fällig bis';
    let intervall := 'Intervall in Tagen';
    while start <= ende do
        (create '2 Aufgaben').(
            Feld1 := Wert1;
            Feld2 := Wert2
        );
        start := date(year(start), month(start), day(start) + intervall)
    end
    
    
      • Ninox-Professional
      • planoxpro
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Mirko Hallo, wenn ich es richtig sehe, hätte man dabei das erste Datum ('Fällig bis') doppelt. Mein Vorschlag wäre folgender:

      let me := this;
      let myDate := date(year('Fällig bis'), month('Fällig bis'), day('Fällig bis') + 'Intervall in Tagen');
      while myDate <= Endedatum do
          let newA := (create '2 Aufgaben');
          newA.(
              'Aufgabe für wen?' := me.'Aufgabe für wen?'
              'Fällig bis' := myDate;
              Status := me.Status;
              Aktion := me.Aktion;
              Titel := me.Titel;
          );
          myDate := date(year(myDate), month(myDate), day(myDate) + me.'Intervall in Tagen');
      end
      

      Wenn sehr viele Termine erzeugt werden, z. B. wöchentlich für ein ganzes Jahr, würde ich den Code außerdem in ein "do as server ... end" packen.
       

      • mirko3
      • vor 2 Jahren
      • Gemeldet - anzeigen

      planox. pro Du meinst, den Datensatz mit dem Startdatum gibt es schon? Dann wäre das natürlich einzuplanen, wie in Deinem Script. Ich dachte, die Datensätze werden in einer verknüpften Untertabelle anzulegen, die dort zu sehen ist "2Aufgaben2". Aber dann wäre mein Script ohnehin fehlerhaft, weil ich den Namen der Untertabelle falsch geschrieben habe. Also danke für die Korrektur und mal sehen, was hallo so schreibt. Genug Anregung sind vorhanden.

      • hallo
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Mirko 

      Das mit der Untertabelle habe ich verworfen, da es mich eigentlich gar nicht interessiert aus welchem Termin die Folgetermine entstanden sind.

    • hallo
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Mirko und planox. pro ,

    vielen Dank für eure beiden Antworten.

    Ich habe es nun hinbekommen und wenn man das Skript liest ist es manchmal wirklich einfach.

    In jedem Fall habe ich endlich meine Serienaufgaben erzeugen können, dank eurer Hilfe.