Resturlaub absteigender Auflistung

Startseite Foren Deutsches LiveCode-Forum Resturlaub absteigender Auflistung

Ansicht von 9 Antwort-Themen
  • Autor
    Beiträge
    • #47642
      akrages
      Teilnehmer

        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
      • #47645
        Klaus Major
        Administrator

          Ein paar Fragen zum ersten „mouseup“ Handler:

          1. Ist das ein „listfield“?
          2. Wie sieht eine Zeile in dem Feld aus?
          3. 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!

        • #47646
          akrages
          Teilnehmer

            Hallo Klaus.
            Zu deiner Frage 1
            Ja das ist ein Listfield.
            In diesem steht: Urlaub! 0.5 Tage
            Urlaub! 1 Tage

            Zu deiner Frage 2

            Zu deiner Frage 3
            Ich benutze folgende globalen Variablen:
            global gActualYear, gAktuelleKalenderwoche, gGeklickt, gVacation_taken

          • #47647
            akrages
            Teilnehmer

              Hallo Klaus.
              Zu deiner Frage 1
              Ja das ist ein Listfield.
              In diesem steht: Urlaub! 0.5 Tage
              Urlaub! 1 Tage

              Zu deiner Frage 2
              siehe Antwort auf Frage 1

              Zu deiner Frage 3
              Ich benutze folgende globalen Variablen:
              global gActualYear, gAktuelleKalenderwoche, gGeklickt, gVacation_taken

              Darü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.

            • #47648
              Klaus Major
              Administrator

                OK, danke!

              • #47649
                akrages
                Teilnehmer

                  kleine korrektur
                  Also eine 1 oder eine 2
                  muss heißen: Also eine 1 oder eine 0.5

                • #47650
                  Klaus Major
                  Administrator

                    OK, werde mir morgen mal Dein Skript genauer ansehen.

                  • #47651
                    Klaus Major
                    Administrator

                      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

                      ...

                    • #47652
                      Klaus Major
                      Administrator

                        Sorry, kann so leider keinen Fehler erkennen.

                        Wenn Du willst, schick mir den Stack mal zu, da muss ich mit dem Debugger durchgehen.

                      • #47653
                        Klaus Major
                        Administrator

                          Monsieur nehmen wohl gerade seinen Resturlaub, wie? 🙂

                      Ansicht von 9 Antwort-Themen
                      • Du musst angemeldet sein, um auf dieses Thema antworten zu können.