Arbeitsstunden berechnen falsch

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Arbeitsstunden berechnen falsch

Re: Arbeitsstunden berechnen falsch

von RobertG » Mo, 22.02.2016 17:01

Hallo Vanessa,

Du musst doch die Stunden, die Du im Bericht anzeigen willst, auch begrenzen durch den Filter. Du könntest z.B. in der "Abfrage für Bericht" anhängen:

Code: Alles auswählen

 WHERE "Abfrage1"."Arbeitsbeginn" BETWEEN "Filter"."von" AND "Filter"."bis" AND "Abfrage1"."Arbeitsende" BETWEEN "Filter"."von" AND "Filter"."bis"
Hier musst Du allerdings noch genauer überlegen, wie Du denn mit Terminen umgehst, die über ein Monatsende hinaus gehen. Die werden so nicht erfasst.
Den Bericht solltest Du nicht nach dem Arbeitsbeginn gruppieren. Dann erscheint im Detail-Bereich jeweils nur ein Eintrag. Du brauchst, wenn ich das richtig sehe, in der Abfrage so etwas wie "Monat" für den Arbeitsbeginn. Um eine entsprechende Gruppe zu erstellen benötigst Du ein Feld in der Abfrage, dass bei allen einzelnen Elementen gleich ist.
Da der Bericht aber schon gefiltert ist kannst Du auch ganz auf eine Gruppierung verzichten und schreibst die Gesamtberechnungen in den Berichtskopf bzw. -fuß (Bearbeiten → Berichtskof/-fuß einfügen).
Wenn Du mit Feldern im Bericht rechnest, dann müssen die Feldnamen in eckigen Klammern stehen - siehe auch die Summe, die Du erstellt hast.

Für Details solltest Du die DB etwas mehr mit Daten füllen, damit klar wird, was addiert werden soll und welchen Sinn die verschiedenen Abfragen haben sollen.

Gruß

Robert

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » Mo, 22.02.2016 15:49

So habe jetzt mal Grob die Berichte erstellt wie es dann mal werden soll.

Vielleicht ist es jetzt einfacher zu verstehen wie ich es meine.

Gruß Vanessa
Dateianhänge
Abrechnung_Filter.odb
(67.79 KiB) 147-mal heruntergeladen

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » Mo, 22.02.2016 14:59

Das Bild mal als PDF
Dateianhänge
Unbenannt 1.pdf
(61.24 KiB) 145-mal heruntergeladen

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » Mo, 22.02.2016 14:55

Hallo Robert,

und zwar habe ich das gemacht um im bericht die Berechnung zu sehen. Da ich im Bericht eine Rechnung erstelle und diese jedem Monat erstellt wird wollte ich das über die filter Funktion machen. Als zweiter Bericht wird dann als Anlage der Nachweiß beigefügt von wann bis Wann gearbeitet wurde aber ohne einzelne Berechnung. Ich habe dein SQL mal übernommen. am Anfang stand bei von und bis noch zahlen. jetzt macht er mir auf einmal ein Datum rein warum auch immer. Jpg ist angehangen.

Erst hatte ich probiert in der Filter Abfage noch die berechnung mit reinzubekommen. Aber da kam immer Syntax error.

Jetzt weiß ich auch nicht mehr weiter das Projekt ist langsam zum Haare raufen. Hätte mich wohl lieber in Calc eingearbeitet und Markos gelernt. :?

Re: Arbeitsstunden berechnen falsch

von RobertG » So, 14.02.2016 15:03

Hallo Vanessa,

Deine Abfrage enthält zwei Tabellen, die nicht miteinander verknüpft sind. Damit multiplizierst Du die Datensätze der Tabellen miteinander. Da die Filtertabelle nur einen Datensatz enthält, die Tabelle "Stunden" aber 2 Datensätze, kombiniert die Abfrage eben alle Datensätze der Tabelle "Filter" mit der aus "Stunden". Einen Sinn ergibt das so nicht.

Warum nutzt Du für den Bericht nicht direkt die Abfrage "Stunden_Filter"? Die zeigt doch die gefilterten Datensätze. Wenn Du noch zusätzlich die Filterwerte erhalten willst, dann ergänze die Abfrage bzw. tausche einfach den SQL-Code dazu aus:

Code: Alles auswählen

SELECT "Stunden".*,( SELECT "von" FROM "Filter" WHERE "ID_F" = TRUE ) AS "von",( SELECT "bis" FROM "Filter" WHERE "ID_F" = TRUE ) AS "bis" FROM "Stunden" WHERE "Arbeitsbeginn" BETWEEN IFNULL( ( SELECT "von" FROM "Filter" WHERE "ID_F" = TRUE ), "Arbeitsbeginn" ) AND IFNULL( ( SELECT "bis" FROM "Filter" WHERE "ID_F" = TRUE ), "Arbeitsbeginn" ) AND "Arbeitsende" BETWEEN IFNULL( ( SELECT "von" FROM "Filter" WHERE "ID_F" = TRUE ), "Arbeitsende" ) AND IFNULL( ( SELECT "bis" FROM "Filter" WHERE "ID_F" = TRUE ), "Arbeitsende" )
Nicht irritiert sein: "von" und "bis" werden als Zahlen wiedergegeben. Das kannst Du aber durch Formate im Bericht wieder zu Datums- und Zeitwerten abändern.

Gruß

Robert

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » So, 14.02.2016 13:48

Huhu,

So nun habe ich endlich wieder die Zeit gefunden an der DB weiter zuarbeiten. Ich wollte jetzt die Berichte erstellen. Da ist mir eingefallen das ich ja nur von eine (Tabelle oder Abfrage) Arbeiten kann. Also habe ich noch mal eine Abfrage erstellt wo die gefilterten Daten und die Errechneten Daten zu sehen sind. Hat auch alles so weit geklappt. Es wird nur das Datum Angezeigt was ich gefiltert habe. Aber jetzt kommst. Er zeitgt es mir 2 x an. Wie kann ich das jetzt machen das er es mir nur einmal anzeigt. Zum leichteren Verständnis hänge ich die DB an.

Gruß Vanessa
Dateianhänge
Abrechnung_Filter.odb
(23.24 KiB) 148-mal heruntergeladen

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » Do, 11.02.2016 16:21

Hi Robert,


genauso meinte ich es.

So habe ich das auch im anderen Thread gesehen aber ich habe es nicht hin bekommen zu basteln. Vielen Lieben dank. Wieviele Kaffee schulde ich dir jetzt? :D

Danke Danke Danke


Gruß Vanessa

Re: Arbeitsstunden berechnen falsch

von RobertG » Mi, 10.02.2016 19:19

Hallo Vanessa,

Du benötigst dafür nicht verschiedene Formulare. Schau Dir einmal genau das Formular an, was ich dafür zusammengestellt habe. Da kannst Du Daten eintragen und Daten Filtern - und natürlich den gefilterten Inhalt auch als Basis für einen Bericht nehmen. Um den Bericht aus dem Formular zu starten brauchst Du nur ein ganz kleines Makro. Dann hast Du alles aus einem Formular bedienbar.

Gruß

Robert
Dateianhänge
Abrechnung_Filter.odb
(22.5 KiB) 138-mal heruntergeladen

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » Mi, 10.02.2016 17:18

Hallo Robert,

Danke für deine mühe.

Also das soll am Ende so werden das die Daten über ein Formular eingetragen werden. Über ein weiteres Formular wollte ich die Abfrage machen das mir nur die Datensätze vom Januar angezeigt werde und dann wollte ich einen bericht erstellen der über diese Abfrage läuft. Bedeutet das ein bericht mit einer Vorgeschriebenen Rechnung und einmal einen Bericht als Stunden nachweiß. So das diese Person es nur noch Ausdrucken brauch und als Rechnung weiterleiten kann. Deswegen auch diese abfrage über das Formular. es soll nicht groß irgendwo rum gefummelt werden.
Ich hoffe du verstehst so einiger maßen was ich meine.

Wenn ich das jetzt richtig verstanden habe muss ja jedesmal ein hacken im IDf gesetzt werden und wieder rausgenommen werden wenn ich Ihn nicht mehr sehen will.

Re: Arbeitsstunden berechnen falsch

von RobertG » Mi, 10.02.2016 15:46

Hallo Vanessa,

zuerst einmal ein paar Änderungen in der Tabelle "Filter". Das Feld "ID_F" würde ich als Ja/Nein-Feld setzen. Du schreibst nur einen Filterwert. Weitere Zeilen werden nicht gebraucht. Die Felder "von" und "bis" müssen wie in der Tabelle "Stunden" als Datums/Zeit-Felder ausgelegt werden - ansonsten gibt es Probleme mit dem Vergleich.
Wenn Du all das gemacht hast, dann klappt der folgende Code in einer Abfrage:

Code: Alles auswählen

SELECT * FROM "Stunden" WHERE 
"Arbeitsbeginn" BETWEEN IFNULL((SELECT "von" FROM "Filter" WHERE "ID_F" = TRUE),"Arbeitsbeginn") AND  IFNULL((SELECT "bis" FROM "Filter" WHERE "ID_F" = TRUE), "Arbeitsbeginn") AND 
"Arbeitsende" BETWEEN IFNULL((SELECT "von" FROM "Filter" WHERE "ID_F" = TRUE),"Arbeitsende") AND  IFNULL((SELECT "bis" FROM "Filter" WHERE "ID_F" = TRUE),"Arbeitsende")
Statt immer wieder mit >= und <= zu operieren wird mit BETWEEN abgefragt. Ist der Eintrag in der Tabelle "Filter" leer, so wird einfach mit dem Feld der jeweiligen Zeile verglichen. Alle Datensätze, die einen Eintrag in dem Feld haben, werden dargestellt.

Gruß

Robert

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » Mi, 10.02.2016 15:10

Hallo Robert,

Danke für deine Hilfe. So langsam verstehe ich es mit der Zeit berechnen.

Jetzt habe ich noch ein anderes Problem ich möchte über ein Formular eine Abfrage machen damit er mir im bericht nur ein bestimmten Zeitraum anzeigt. Ich habe dazu auch was im Forum gefunden http://www.oooforum.de/viewtopic.php?t=63016 aber so klappt es bei mir überhaupt nicht. Ich denke mal das ich irgendein fehler drinne habe oder es geht nicht da ich nicht rein das Datum nehmen. Hast du oder jemand anders eine Idee wie ich das bauen kann. häge mal die DB an so weit wie ich bin.

Gruß Vanessa
Dateianhänge
Abrechnung.odb
(14.36 KiB) 118-mal heruntergeladen

Re: Arbeitsstunden berechnen falsch

von RobertG » Mo, 08.02.2016 15:45

Hallo Vanessa,

vergiss den ersten Ansatz. Da war ein Schreibfehler drin und deswegen ging alles daneben. Liegt daran, dass ich gerade ein anderes Projekt mache, in dem ich Zeiten in Dezimalzahlen umwandeln muss. In den Abfragen ist irrtümlich 'mm' statt 'mi' enthalten. So reicht die folgende Abfrage völlig:

Code: Alles auswählen

SELECT "ID", "Arbeitsbeginn", "Arbeitsende", "Pause", "Arbeitsort", DATEDIFF( 'mi', "Arbeitsbeginn", "Arbeitsende" ) / 60.00 AS "Arbeitszeit", DATEDIFF( 'mi', "Arbeitsbeginn", "Arbeitsende" ) / 60.00 - HOUR( "Pause" ) - MINUTE( "Pause" )/60.00 AS "Arbeitszeit-Pause"  FROM "Stunden"
Mit dieser Abfrage erhältst Du die Zeiten korrekt, aber eben nicht in der formatierten Fassung. Das war, wenn ich das recht verstehe, auch gar nicht Dein Ziel. Die halbe Stunde in der ersten Zeile habe ich völlig übersehen. Und mit einer 'mm'-Abfrage wäre ja nur die Differenz in Monaten noch zusätzlich draufgerechnet worden.

Gruß

Robert

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » Mo, 08.02.2016 10:17

Hi Robert,

Danke für deine mühe. Raufe mir gleich die Haare entweder bin ich zu blond und die Formel einzubauen oder kein Plan. Erst habe ich es in der SQL Ansicht eingebaut da kam dann immer Syntax Fehler. Dann habe ich es einfach in der Entwurfsansicht eingebaut. So macht er auch eine abfage aber immer noch nicht auf die Minuten. Ich finde den verdammten Fehler nicht.

Ich hänge die Datei noch mal an wie sie jetzt ist.
Dateianhänge
Abrechnung.odb
(5.31 KiB) 143-mal heruntergeladen

Re: Arbeitsstunden berechnen falsch

von RobertG » Fr, 05.02.2016 18:34

Hallo Vanessa,

prinzipiell werden ja die Minuten als Nachkommastellen von Stunden korrekt dargestellt. Wenn Du unbedingt die Minuten- und Stundendarstellung haben möchtest, dann geht so etwas allein für die "Arbeitszeit-Pause"-Spalte ziemlich umständlich:
---korrigierte Version ---

Code: Alles auswählen

RIGHT('0'||(( DATEDIFF( 'mi', "Arbeitsbeginn", "Arbeitsende" ) - HOUR( "Pause" ) * 60 - MINUTE( "Pause" ) ) / 60),2) ||':'||
REPLACE(LEFT((((( DATEDIFF( 'mi', "Arbeitsbeginn", "Arbeitsende" ) - HOUR( "Pause" ) * 60 - MINUTE( "Pause" ) ) /60.00)-(( DATEDIFF( 'mi', "Arbeitsbeginn", "Arbeitsende" ) - HOUR( "Pause" ) * 60 - MINUTE( "Pause" ) ) / 60))*60),2),'.','0')
 "Arbeitszeit-Pause"
Mit || werden Textteile aneinandergefügt. Wird nur /60 statt /60.00 geschrieben, so erhältst Du nur die Stunden. Über RIGHT(...) wird die ermittelte Stundenzahl zuerst vorne mit einer '0' versehen und dann der Text von rechts aus auf 2 Stellen beschnitten.
Jetzt muss noch nach ':' die Minutenzahl neu berechnet werden. Hierzu nutze ich die Berechnung der Stundenzahl mit Nachkommastellen und subtrahiere davon die Anzahl der ganzen Stunden. Das Ganze multipliziere ich mit 60, damit aus den Stundenbruchteilen wieder Minuten werden. Damit auch '00' korrekt dargestellt werden kann muss in dem so erstellten Text noch der Dezimalpunkt durch eine '0' ersetzt werden.
Alles reichlich umständlich, ist mir aber spontan nicht besser eingefallen.

Gruß

Robert

Re: Arbeitsstunden berechnen falsch

von Vanessa Sturm » Fr, 05.02.2016 16:12

Hallo Robert,

ich danke dir schon mal. soweit hat das alles geklappt. auch mit der Pause aber er rechnet in der Arbeitszeit keine min. ich hänge dir einfach mal die Datei an. habe jetzt noch ein Feld hinzugefügt mit Arbeitslohn auch diese berechnung stimmt so weit außer das mit den Min.

Könntest du mir da noch mal helfen bitte?

Gruß Vanessa
Dateianhänge
Abrechnung.odb
(5.14 KiB) 148-mal heruntergeladen

Nach oben