Startseite › Foren › Deutsches LiveCode-Forum › Resturlaub absteigender Auflistung
- Dieses Thema hat 9 Antworten und 2 Teilnehmer, und wurde zuletzt aktualisiert vor 1 Jahr, 11 Monaten von
Klaus Major.
-
AutorBeiträge
-
-
März 26, 2023 um 01:19 Uhr #47642
Stimmt! Mein Post ist weg.
Also nochmal.
Ich habe in meiner App die Möglichkeit eingebaut, mir beim Eintragen eines Urlaubstages in ein Feld, automatisch den verbliebenen Resturlaub anzeigen zu lassen.Das klappt eigentlich ganz prima, allerdings nur so lange, wie ich vorwärts in die Woche plane. Wenn ich z.B. Montag anklicke, erscheint eine kleine Liste, aus der ich wählen kann, ob ich einen ganzen Tag oder einen halben Tag Urlaub für Montag eintragen möchte. Danach erscheint ein kleines Image und ein Feld in dem der Resturlaub steht.
Mache ich das gleiche mit Dienstag, dann läuft das genau so ab und die beiden Felder mit dem Returlaub zeigen diesen richtig an. Also z.B. Montag zeigt 10 Tage und Dienstag zeigt 9 Tage Resturlaub an.
Problem: Lösche ich den Montag, dann zeigt Dienstag zwar korrekt 10 Tage Resturlaub an aber sobald ich für Montag wieder einen Tag Urlaub eintrage stimmen die Werte nicht mehr.
In diesem Fall zeigt Montag 9 Tage und Dienstag 10 Tage Resturlaub an.
Was muss ich machen, damit die Reihenfolge auch wieder abnimmt?Hier mal mein Script zum auswählen wie lange Urlaub genommen wird (1Tag oder 1/2Tag)
## Urlaub! geklickt on mouseUp select the clickLine put the value of the clickline into tClickedText if tClickedText contains "Urlaub!" then put Mo,Di,Mi,Do,Fr,Sa into MyVar put fld "Urlaubsanspruch" into tVacation if tClickedText contains "0.5" then put 0.5 into gVacation_taken end if if tClickedText contains "1" then put 1 into gVacation_taken end if ## Kein Urlaub mehr übrig. if fld "Urlaubsanspruch" <0.5 or fld "Urlaubsanspruch" is empty then answer "Du hast keinen Urlaub mehr!" hide fld "sclf" with visual effect wipe down very fast show grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) with visual effect wipe down very fast exit mouseUp else ## Montag if the visible of img "Urlaub!Mo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) = false and gGeklickt = "Mo" then put gVacation_taken into fld "UrlaubGenommenMo" show img "Urlaub!Mo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) subtract gVacation_taken of fld "Urlaubsanspruch" add gVacation_taken to fld "Urlaubsliste" put fld "Urlaubsanspruch" into fld "SumMo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if ## Dienstag if the visible of img "Urlaub!Di" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) = false and gGeklickt = "Di" then put gVacation_taken into fld "UrlaubGenommenDi" show img "Urlaub!Di" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) subtract gVacation_taken of fld "Urlaubsanspruch" add gVacation_taken to fld "Urlaubsliste" put fld "Urlaubsanspruch" into fld "SumDi" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if ## Mittwoch if the visible of img "Urlaub!Mi" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) = false and gGeklickt = "Mi" then put gVacation_taken into fld "UrlaubGenommenMi" show img "Urlaub!Mi" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) subtract gVacation_taken of fld "Urlaubsanspruch" add gVacation_taken to fld "Urlaubsliste" put fld "Urlaubsanspruch" into fld "SumMi" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if ## Donnerstag if the visible of img "Urlaub!Do" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) = false and gGeklickt = "Do" then put gVacation_taken into fld "UrlaubGenommenDo" show img "Urlaub!Do" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) subtract gVacation_taken of fld "Urlaubsanspruch" add gVacation_taken to fld "Urlaubsliste" put fld "Urlaubsanspruch" into fld "SumDo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if ## Freitag if the visible of img "Urlaub!Fr" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) = false and gGeklickt = "Fr" then put gVacation_taken into fld "UrlaubGenommenFr" show img "Urlaub!Fr" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) subtract gVacation_taken of fld "Urlaubsanspruch" add gVacation_taken to fld "Urlaubsliste" put fld "Urlaubsanspruch" into fld "SumFr" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if ## Samstag if the visible of img "Urlaub!Sa" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) = false and gGeklickt = "Sa" then put gVacation_taken into fld "UrlaubGenommenSa" show img "Urlaub!Sa" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) subtract gVacation_taken of fld "Urlaubsanspruch" add gVacation_taken to fld "Urlaubsliste" put fld "Urlaubsanspruch" into fld "SumSa" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if end if end if ## Und nun den ganzen Stack speichern save this stack with newest format ##;-) fertig end mouseUp
Und hier das Script zum löschen eines eingetragenen Urlaubstages für Montag
On mouseUp ## Urlaub stornieren if fld "SumMo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) <> empty\ and gGeklickt = "Mo" and the visible of img "Urlaub!Mo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) is true then clear line 1 of gMyApprovedLeave hide img "Urlaub!Mo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) put fld "UrlaubGenommenMo" into tUrlaubGenommenMo put empty into fld "SumMo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) put empty into fld "UrlaubGenommenMo" add tUrlaubGenommenMo to fld "Urlaubsanspruch" subtract tUrlaubGenommenMo of fld "Urlaubsliste" if the visible of img "Urlaub!Mo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) is true then add tUrlaubGenommenMo to fld "SumMo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if ## Wenn in den Folgetagen der aktuellen Woche auch Urlaub eingtragen ist, dann die angezeigten Werte korrigieren! if the visible of img "Urlaub!Di" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) is true then add tUrlaubGenommenMo to fld "SumDi" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if if the visible of img "Urlaub!Mi" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) is true then add tUrlaubGenommenMo to fld "SumMi" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if if the visible of img "Urlaub!Do" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) is true then add tUrlaubGenommenMo to fld "SumDo" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if if the visible of img "Urlaub!Fr" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) is true then add tUrlaubGenommenMo to fld "SumFr" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if if the visible of img "Urlaub!Sa" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) is true then add tUrlaubGenommenMo to fld "SumSa" of grp ("Leistung " & gAktuelleKalenderwoche) of grp ("Leistung " & gActualYear) end if end if ## Und nun den ganzen Stack speichern save this stack with newest format ##;-) fertig end mouseUp
-
März 26, 2023 um 13:20 Uhr #47645
Ein paar Fragen zum ersten „mouseup“ Handler:
- Ist das ein „listfield“?
- Wie sieht eine Zeile in dem Feld aus?
- Arbeitest Du mit globalen Variablen? Wenn ja, welche?
Bitte mal ein Beispiel posten, danke.
Ein paar allgemeine Hinweise:
„save this stack with newest format“
LC merkt sich, in welchem Format ein Stack gespeichert wurde und nimmt dieses Format fürderhin an, Du kannst also „with newest format“ getrost weglassen.
„subtract tUrlaubGenommenMo of fld „Urlaubsliste“
Besser (= offiziell!) -> subtract tUrlaubGenommenMo FROM fld „Urlaubsliste“
Mit jeder Version wird die Engine weniger nachsichtig bei solchen Kleinigkeiten, daher vorsichtshalber immer die offizielle Syntax verwenden!
-
März 26, 2023 um 18:23 Uhr #47646
Hallo Klaus.
Zu deiner Frage 1
Ja das ist ein Listfield.
In diesem steht: Urlaub! 0.5 Tage
Urlaub! 1 TageZu deiner Frage 2
Zu deiner Frage 3
Ich benutze folgende globalen Variablen:
global gActualYear, gAktuelleKalenderwoche, gGeklickt, gVacation_taken -
März 26, 2023 um 18:37 Uhr #47647
Hallo Klaus.
Zu deiner Frage 1
Ja das ist ein Listfield.
In diesem steht: Urlaub! 0.5 Tage
Urlaub! 1 TageZu deiner Frage 2
siehe Antwort auf Frage 1Zu deiner Frage 3
Ich benutze folgende globalen Variablen:
global gActualYear, gAktuelleKalenderwoche, gGeklickt, gVacation_takenDarüberhinaus gibt es noch folgende Felder:
fld „Urlaubsanspruch“
fld „Urlaubsliste“
und dann noch für jeden Wochentag von Mo bis Sa also 6 Felder die da heißen:
„UrlaubGenommenMo“ „UrlaubGenommenDi“ „UrlaubGenommenMi“
„UrlaubGenommenDo“ „UrlaubGenommenFr“ „UrlaubGenommenSa“Un diesen steht dann wie lange ich Urlaub am jeweiligen Tag genommen habe.
Also eine 1 oder eine 2
Und die Werte in diesen Feldern werden genutzt, wenn der Urlaub (mit dem 2ten Script) storniert wird.Und danke für die Hinweise.
…also „with newest format“ getrost weglassen „Das wusste ich noch gar nicht“.
„subtract tUrlaubGenommenMo of fld „Urlaubsliste“
Besser (= offiziell!) -> subtract tUrlaubGenommenMo FROM fld „Urlaubsliste“Das klingt ehrlich gesagt auch plausibler.
-
März 26, 2023 um 18:37 Uhr #47648
OK, danke!
-
März 26, 2023 um 18:40 Uhr #47649
kleine korrektur
Also eine 1 oder eine 2
muss heißen: Also eine 1 oder eine 0.5 -
März 26, 2023 um 19:12 Uhr #47650
OK, werde mir morgen mal Dein Skript genauer ansehen.
-
März 28, 2023 um 17:40 Uhr #47651
Hm, bisher habe ich noch keine Lösung für Dein Problem.
Aber hier ein paar generelle Hinweise:
on mouseUp
## Ist ja ein LISTFIELD, daher passiert das automatisch!
## select the clickLine
## put the value of the clickline into tClickedText
## Für ein LISTFIELD reicht das hier:
put the selectedtext of me into tClickedText
## Da beide Zeile in Deinem LISTFIELD "Urlaub" enthalten, ist dieses IF überflüssig
if tClickedText contains "Urlaub!" then
## Diese Variabel wird nicht verwendet, aber soll wohl ein STRING sein, daher Anfürhrungszeichen!
## put Mo,Di,Mi,Do,Fr,Sa into MyVar
put "Mo,Di,Mi,Do,Fr,Sa" into MyVar
put fld "Urlaubsanspruch" into tVacation
## Nur zwei Zeilen, siehe oben, daher reicht ein ELSE
if tClickedText contains "0.5" then
put 0.5 into gVacation_taken
ELSE
put 1 into gVacation_taken
end if
...
-
März 29, 2023 um 16:06 Uhr #47652
Sorry, kann so leider keinen Fehler erkennen.
Wenn Du willst, schick mir den Stack mal zu, da muss ich mit dem Debugger durchgehen.
-
April 7, 2023 um 11:25 Uhr #47653
Monsieur nehmen wohl gerade seinen Resturlaub, wie? 🙂
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.