0

Zeiterfassung mit Nachtschicht

Hallo baue gerade an einer Zeiterfassung zur Kontrolle meiner Arbeitszeiten.

Ich Arbeite im 3 Schicht System und habe immer 30 min Pause.

Nachtschicht von 22:00 - 06:00 Uhr

Spätschicht von 14:00 - 22:00 Uhr

Frühschicht von 06:00 - 14:00 Uhr.

wie bekomme ich es hin das er mir wenn ich im Auswahlfeld Schichten auf Nachtschicht gehe er mir gleich von 22:00 - 06:00 einträgt und bei den anderen Schichten das gleiche.

Habe meine DB mal mit angehängt.

Lg Michael

28 Antworten

null
    • mirko3
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Hi Michael. Im Auswahlfeld unter "Trigger nach Änderung" folgendes eintragen. Mirko

    switch Schicht do
    case 1:
        Anfang := time(6, 0) + (Ende := time(14, 0)) + (Pause := "30min")
    case 2:
        Anfang := time(14, 0) + (Ende := time(22, 0)) + (Pause := "30min")
    case 3:
        Anfang := time(22, 0) + (Ende := time(6, 0)) + (Pause := "30min")
    end
    
      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       
      Hi Mirco, vielen Dank genau so sollte es sein. Jetzt ist mir aber ein Denkfehler unterlaufen. Was mache ich wenn ich mal länger Arbeiten muss. Kommt zwar selten vor aber kommt mal vor. Dann kann ich es so garnicht nutzen . Lg Michael

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

      Na, Du kannst doch das Zeitfeld nachträglich beschreiben.

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       

      okay werd ich gleich morgen mal ausprobieren. Danke erstmal.

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Hi Mirco, wie bekomme ich es hin das bei Nachtschicht bei Stunden nicht -16 steht sondern die Gearbeiteten Stunden. Lg

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

       leg in das Funktionsfeld folgenden Code. Mirko

      if Anfang < Ende then
          Ende - Anfang
      else
          datetime(today() + 1, Ende) - datetime(today(), Anfang)
      end
      
      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

      Morgen, super aber er müsste mir noch die 30min Pause abziehen das ich auf 7,5 Stunden komme. Lg

    • mirko3
    • vor 6 Monaten
    • Gemeldet - anzeigen

    hab ich mir schon fast gedacht

    if Anfang < Ende then
        Ende - Anfang - time(1800000)
    else
        datetime(today() + 1, Ende) - datetime(today(), Anfang) - time(1800000)
    end
    
      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       super Danke Dir.

      Perfekt.👍

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

        

      Hi,Mirco ist es auch möglich wenn ich das Datum auswähle das er mir den Tag mit rausgibt? Lg

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

      Das kannst Du mit

      ...end + weekdayName(Datum)
      

      einfügen. Mirko

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       perfekt 👍 Danke

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Hi Mirco, noch eine letzte Frage. Wie bekomme ich es hin das er mir bei Stunden nicht 7:30 sondern 7,5 anzeigt lässt sich dann besser zusammenzählen.

      Lg

    • mirko3
    • vor 6 Monaten
    • Gemeldet - anzeigen
    if Anfang < Ende then
        number(Ende - Anfang - time(1800000)) / 3600000
    else
        number(datetime(today() + 1, Ende) - datetime(today(), Anfang) - time(1800000)) /
        3600000
    end
    

    Du mußt Dir noch etwas einfallen lassen, wie du das mit der Pause änderst. Im Moment hast Du ein Textfeld und damit kann man nicht rechenen. Falls Du in Zukunft mal veränderte Pausenzeiten hast, dann wird das nicht mit eingerechnet, da ich mit time(1800000) das im Script fix eingetragen habe. Das heißt ersetze es am Besten durch ein Zeitdauerfeld, Formatierung auf Minuten und du bist flexibel, wenn Du mal länger die Beine hochlegen willst. Script sieht dann so aus.

    if Anfang < Ende then
        number(Ende - Anfang - Zeitdauer) / 3600000
    else
        number(datetime(today() + 1, Ende) - datetime(today(), Anfang) - Zeitdauer) /
        3600000
    end
    
      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       super hab es geändert. Perfekt bist der beste.

      Danke dir.👍

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       

      Morgen, Mirco gibt es eine Möglichkeit in ein Ninox Webinar zu kommen um an die DB auch ran zukommen. Lg Michael

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Hi Mirco,

      gibt es die Möglichkeit in einem Zahlenfeld mit Formatierung zu Arbeiten. Habe ein Feld mit Gleitzeitkonto, wenn es z.b. -4,96 hat soll es rot sein und bei + grün. Die Zahl wird Händisch eingetragen.

      Vielen Dank schonmal 

      Lg Michael

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Ein Zahlenfeld läßt sich nicht farblich formatieren. Du könntest daneben ein Funktionsfeld legen, welches dann eine Farbe anzeigt. Du könntest auch die styled() Funktion benutzen und dir damit auch die Zahl anzeigen lassen, oder in der Tabellenansicht eine bedingte Formatierung verwenden. Für ein f(x) Feld:

      if ZAHLFELD < 0 then color("red") else color("green") end
      

      Mirko

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Morgen Mirco,

      Danke schön hat funktioniert .

      Lg Michael

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       

      Hallo Mirco, hab mir jetzt noch eine Tabelle gemacht mit VZ-Konto. Nun möchte ich den Wert der Tabelle VZ-Konto "Ampel" in ein Formelfeld Personen anzeigen lassen mit sämtlichen Formatierungen. 

      Ist das möglich? 

      Lg Michael

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

      Ehrlich gesagt, ist das zu wenig Kontext um helfen zu können. Mirko

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Hi Mirco, 

      hab in der DB Zeiterfassung noch eine Tabelle gemacht in der ich die Gleitzeitstunden eintrage. Sie sind formatiert 0-60 grün, 60-90 orange, über 90 rot. Und diesen Wert möchte ich gerne in die Tabelle Personen angezeigt bekommen. Bis her war es so hatte ein Zahlenfeld in der Tabelle Personen und da habe ich die Stunden eingetragen. Da neben dann ein Formelfeld wo dann die gleichen Stunden drin standen nur Formatiert. Und das sieht nicht gut aus zweimal den gleichen Wert neben einander.

      Hoffe das reicht als Erklärung. 😀

      Lg Michael

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

      Ich habe eine andere Herangehensweise, ohne zusätzliche Tabelle gewählt. In der Tabelle Personen gibt es jetzt zwei neue Felder, Zahlenfeld "Gleitzeit" und Funktionsfeld "Gleitzeitstunden". Solange das Zahlenfeld nicht befüllt ist, ist das Funktionsfeld versteckt. Dann wird das Zahlenfeld verborgen und das Funktionsfeld ist sichtbar. Das Löschen des Zahlenfelds funktioniert über einen Klick in das Funktionsfeld. Mal sehen, ob es Dir so passt. Sonst könnte man auch ganz trivial ein Auswahlfeld erstellen mit den drei Auswahlen 0-60, 60-90 und >90 und farbig machen. Das wäre dann eine ganz einfache Lösung. Mirko

      • Michael
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Hi Mirco, das ist super so.👍🏻

      Ich hab zur Zeit zum Beispiel -11,5 Stunden und wenn ich das eingebe bleibt das Feld leer. Bei + Stunden ist es perfekt. Lg Michael

      • mirko3
      • vor 6 Monaten
      • Gemeldet - anzeigen

      ändere den Code im Formelfeld. Mirko

      switch true do
      case Gleitzeit <= 60:
          styled(text(Gleitzeit) + "h", "green")
      case 60 < Gleitzeit and Gleitzeit <= 90:
          styled(text(Gleitzeit) + "h", "orange")
      case 90 < Gleitzeit:
          styled(text(Gleitzeit) + "h", "red")
      end