0

Trigger des Status des Auswahlfeldes vor Änderung

Hallo, ich habe eine Frage.

Ist es möglich für eine Berechnung den Status vor dem Ändern des Auswahlfeldes auszulesen?

Meine Aswahl hat vier Optionen und beim Ändern wäre es wichtig den Status vor der Änderung auszulesen da ich unterschiedliche Berechnungen für ein Ergebnis anwenden muss.

Als Beispiel 

Aktuell = Dienst und geht auf Frei müssen die Felder Dienste Gesammt -1 und DF Tage -1

stelle ich von Frei auf Dienst um ist  das ganze umgekehrt. Soweit funktioniert das wunderbar

Ist dies aber ein Feld wie Urlaub, Krank oder sonstiges schaut die Rechnung anders aus.. soweit auch lles klar.

ABER Stelle ich von Urlaub, Sonstiges oder Krank  Mittels Auswahl wieder auf Dienst ist die Rückberechnung eine andere als bei Frei.

Dazu müsste ich den Status des Auswahlfeldes vor der Änderung in die Berechnung einbeziehen.

ist dies über den Triger aus dem Auswahlfeld überhaupt möglich oder muss ich den Status in einer extra Tabellenspalte zwischenspeichern.?

let my := this;
let myDiensteinteilung := Diensteinteilung;
let myStat := Auswahl;
let myDate := Datum;
let myDIF := 0;
let myDIG := 'Dienste Gesamt';
for i in select Diensttabelle where Diensteinteilung = myDiensteinteilung and Datum >= myDate do
let myX := i.DFTage;
let myY := i.'Dienste Gesamt';
let myZ := i.'Dienst in Folge';
let myKR := i.KR;
if myStat = 1 then
i.(DFTage := myX + 1);
i.('Dienste Gesamt' := myY + 1);
i.('Dienst in Folge' := myZ + 1)
end;
if myStat = 2 then
i.(DFTage := myX - 1);
i.('Dienste Gesamt' := myY - 1);
i.('Dienst in Folge' := myDIF)
end;
if myStat = 3 then
i.(KR := myKR + 1);
i.('Dienste Gesamt' := myY - 1)
end;
if i.KR > 7 then
i.(KR := 1);
i.(DFTage := myX - 1)
end;
if myStat = 4 then
i.('Dienste Gesamt' := myY + 1)
end;
if myStat = 6 then
i.('Dienste Gesamt' := myY - 1)
end
end

 

VLG

5 Antworten

null
    • Torsten_Stang.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo,

     

    Den Feldinhalt vor Änderung kannst Du nicht auslesen - wie wäre es mit einem zweiten, versteckten Feld? Dessen Inhalt könntest Du zu Beginn des Scripts in eine Variable nehmen und zum Ende gemäß der neuen Auswahl anpassen.

     

    lg, Torsten

    • Martin_K
    • vor 6 Jahren
    • Gemeldet - anzeigen

    habe ich schon so umgesetzt.. so funktioniert es sind aber noch einige Bugs drinne..

     

     bei der Änderung der von Dienst zu Frei zu Dienst wird mir die Spalte Dienst in Folge nicht richtig berechnet.. es sollte immer um einen Tag addiert werden.

     

    das ist der Code dazu

    let my := this;
    let myDiensteinteilung := Diensteinteilung;
    let myStat := Auswahl;
    let myOldStat := OldStat;
    let myDate := Datum;
    let myDIF := 'Dienst in Folge';
    let myDIG := 'Dienste Gesamt';
    let myZ := 'Dienst in Folge';
    for i in select Diensttabelle where Diensteinteilung = myDiensteinteilung and Datum >= myDate do
    let myX := i.DFTage;
    let myY := i.'Dienste Gesamt';
    let myKR := i.KR;
    if myStat = 1 and myOldStat = 2 then
    i.(DFTage := myX + 1);
    i.('Dienste Gesamt' := myY + 1);
    i.('Dienst in Folge' := myDIF + 1);
    i.(OldStat := myStat)
    else
    if myStat = 1 and myOldStat = 3 then
    i.(KR := myKR - 1);
    i.('Dienste Gesamt' := myY + 1);
    i.('Dienst in Folge' := myZ + 1);
    i.(OldStat := myStat)
    else
    if myStat = 1 and myOldStat = 4 then
    i.(OldStat := myStat)
    else
    if myStat = 1 and myOldStat = 6 then
    i.('Dienste Gesamt' := myY + 1);
    i.(OldStat := myStat)
    end
    end
    end
    end;
    if myStat = 2 then
    i.(DFTage := myX - 1);
    i.('Dienste Gesamt' := myY - 1);
    i.('Dienst in Folge' := myZ - 1);
    i.(OldStat := myStat)
    end;
    if myStat = 3 then
    i.(KR := myKR + 1);
    i.('Dienst in Folge' := myZ - 1);
    i.('Dienste Gesamt' := myY - 1);
    i.(OldStat := myStat)
    end;
    if i.KR > 7 then
    i.(KR := 0);
    i.(DFTage := myX - 1)
    end;
    if myStat = 4 then
    i.(OldStat := myStat)
    end;
    if myStat = 6 then
    i.('Dienste Gesamt' := myY - 1);
    i.(OldStat := myStat)
    end;
    let myZ := myZ + 1;
    void
    end

    • Martin_K
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ich hätte noch eine Frage zum auslesen eines Datensatzes..

    wie oben im Bild gezeigt liegt der Triger auf dem Datensatz FREI und ich müsste den Wert des Datensatzes/ Dienst in Folge davor/darüber auslesen..

    Ich komme mit der Syntax nicht wirklich weiter..

    eventuell hat jemand eine Tipp für mich

    • Support
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo,

    das Skript könnte so aussehen: 

    let myDiensteinteilung := Diensteinteilung;
    let myDate := Datum;

    let myLast := max(select Diensttabelle[Diensteinteilung = myDiensteinteilung and Datum >= myDate].'Dienst in Folge')

     

    Gruß, Jörg

    • Martin_K
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Jörg, Danke für die Antwort so hatte ich es schon gehabt funktioniert nur beim hochzählen kommt aber den Auswahlfeldern durcheinander..

     

    ich habe aber das über ein Fx Feld gelöst und hier beschrieben..

    https://ninoxdb.de/de/forum/technische-hilfe-5ab8fe445fe2b42b7dd39ee8/anderung-von-datensatzen-nach-wechsel-eines-auswahlfeldes-5bc38d4f13e90e0528f18b52?post=5bc9a7fd2837e274d2db969a&page=1

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 5Antworten
  • 2285Ansichten