Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Tagesabfragen zusammenfassen

Begonnen von dafacey, Januar 15, 2020, 10:00:33

⏪ vorheriges - nächstes ⏩

dafacey

Hallo, ich bin ganz frisch hier und versuche schon einige Tage hier eine Lösung zu finden. Klappte leider nicht.
Bitte HILF
Mein Problem:

Ich möchte in einem Bericht einen ganz normalen Wochenbericht abfragen. Das klappt alles easy.
Jedoch hänge ich daran:

Datum       Von        Bis         Pause   Std
1.1.2020    7:30     17:00    0:30      9

jetzt kommt es aber vor das an einem Tag mehrere Termine sind:

2.1.2020 07:30  10:30                   3
2.1.2020 10:30   12:30     0:30      1,5
2.1.2020  12:30  17:00                  4,5

Dargestellt sollte aber nur werden:

2.1.2020 07:30 - 17:00    0:30    9h
Nur die Startzeit und die Endzeit müssten für diesen Bericht angezeigt werden.. in anderen Berichten brauche ich aber alle Zeiten. Somit kann ich nicht einfach nur eine Start und Endzeit angeben.

ich hoffe mir kann da jemand helfen.

PhilS

Schau dir mal die Aggregatfunktionen MIN, MAX und SUM an.
Außerdem solltest du einheitlich die Industriezeiten verwenden. D.h. 0,5 Std. anstelle von 0:30 Minuten. Das macht viele Rechnungen einfacher und so hast du es bei den Arbeitszeiten ja auch schon gemacht.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

DF6GL

Hallo,


um die Zeiten pro Datum in irgendeiner Weise zu berechnen und zusammengefasst angezeigt werden sollen, ist das Gruppieren des Datumsfeldes im Bericht zu empfehlen.

dafacey

#3
Hallo und Danke für die Antworten.

Vergessen zu sagen. Die Rechnungen und die Abfrage und der Gesamte Bericht das funktioniert schon alles. Also da muss nichts mehr getan werden!

Leider funktioniert die "Gruppierung" vom Datum auf Tage nicht da er mir ja trotzdem 3x den selben Tag in eine Gruppe legt wenn er 3x vorhanden ist.

Das Problem liegt nur daran, dass er den Tag 3x anzeigt (Pro Zeitangabe) und ich hätte Ihn gerne 1x angezeigt (Gesamt) mit der MIN und MAX Zeit. jedoch bekomme ich das nicht auf das Datum bezogen hin. also das der Tag dann nur 1x vorkommt. er kommt bei mir immer so oft vor wie er eingetragen wurde.

vlt ist es ja nur eine kleinigkeit.. jedoch bin ich noch nicht dahinter gekommen

PhilS

Zitat von: dafacey am Januar 16, 2020, 10:11:46
Vergessen zu sagen. Die Rechnungen und die Abfrage und der Gesamte Bericht das funktioniert schon alles. Also da muss nichts mehr getan werden!

Leider funktioniert die "Gruppierung" vom Datum auf Tage nicht da er mir ja trotzdem 3x den selben Tag in eine Gruppe legt wenn er 3x vorhanden ist.
Etwas widersprüchlich. Alles funktioniert, es funktioniert nur nicht...

Die unten folgende Abfrage sollte das gewünschte Ergebnis liefern, wobei die Summierung der Pause nur mit Industriezeiten und nicht mit Zeitformaten funktioniert.

SELECT
    MIN(Von)   AS Begin
    MAX(Bis)   AS Ende
    SUM(Pause) AS PauseGesamt
    SUM(Std)   AS StdGesamt
FROM deineTabelle
GROUP BY [Datum]
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

dafacey

ahhh OK

ich versteh jetzt wo der Hund begraben ist...
Ich hab alle diese Formeln und Rechnungen, Gruppierungen und Zeitdifferenzen NUR im Bericht berechnet.
nicht in der Abfrage.
Der Bericht selbst ist ja schon in mehrere Gruppen wie KW / Mitarbeiter und sonstiges aufgesplittet.

Dh. Der Bericht wirft mir jetzt eine schöne Gesamtübersicht der gewünschten Felder aus inkl. Berechnung.

https://photos.google.com/photo/AF1QipOBcNPtUkAj2TNipEFY3UWhC-TQNi4F3AgmJoKE so sieht mein Bericht aus.

Hab ich da jetzt den total falschen Ansatz das alles im Bericht zu berechnen? sollte / muss man das in der Abfrage machen? Weil die Gruppierung und Summenbildung im Bericht recht einfach ist? oder versteh ich da jetzt alles verkerht.

Kann ich den Code irgendwie nur in den Bericht implementieren?

DF6GL

Hallo,

der Weg, alle Gruppierungen und Berechnungen im Bericht zu machen, ist m. E. der richtige Weg.

Ein Bericht ignoriert mitunter die in der Abfrage eingestellten Gruppierungen und Sortierung.  Berechnungen in der Abfrage können allenfalls dann hilfreich sein, wenn sie sich nur auf den aktuellen DS beziehen.

dafacey


SELECT
Tabelle1.Dat,
Tabelle1.Datum,
Tabelle1.VON,
Tabelle1.BIS,
Tabelle1.PAUSE,
Tabelle1.MITARBEITER,
Tabelle1.BAUSTELLE,
Tabelle1.ORT,
Tabelle1.TÄTITGKEIT,
[STUNDEN]*24 AS STD,
Tabelle1.H,
DatePart("ww",[datum]) AS KW,
MonthName(Month([Datum])) AS MONAT,
Daten.Anstellung
FROM Daten INNER JOIN Tabelle1 ON Daten.ID = Tabelle1.MITARBEITER.Value


Das ist meine derzeitige Abfrage. Und hier würde ich gerne MAX MIN  bei VON BIS einfügen.. klappt aber net
wenn ich es mit MIN und MAX mache krieg ich nicht alle Argumente zum laufen und die Berechnungen gehen garnicht mehr.
er sagt dann auch das er, Dat, Pause und Mitarbeiter nicht mehr erkennt. sowie "" ein falsches Argument ist.

MIN und MAX alleine in einer eigenen Abfrage funktioniert.. nur fehlen mir dann die ganzen anderen Argumente.
Füge ich sie dann hinzu... geht die Gruppierung flöten da er die Argumente auch in die Gruppierung aufnimmt?

ich bin jetzt fast mehr verwirrt als vorher ^^




DF6GL

Hallo,


Du verwirrst uns..   ;)


Zitat...FROM Daten INNER JOIN Tabelle1 ON Daten.ID = Tabelle1.MITARBEITER.Value

Ist "Tabelle1.MITARBEITER" das Fremdschlüsselfeld für "Daten.ID" ?


Zitat[STUNDEN]*24 AS STD,

Warum heißen die berechneten Tage hier "STD"?

ZitatMonthName(Month([Datum])) AS MONAT,

Auf reservierte Wörter dringend verzichten!


Allgemein gewinnt die Benamsung nicht gerade den 1. Platz..

dafacey

#9
Hey Leute,

also:
Mitarbeiter und Anstellung kommen aus der Tabelle: Daten weil ja alle Mitarbeiter unterschiedlich angestellt sein können (wochenstunden).
Mitarbeiter sind Mitarbeiternamen.  Nur ist hier der Name: Mitarbeiter Mustermann und das Kürzel dazu MM. und weil oft mehrere mitarbeiter zusammen an projekten arbeiten und die eingabe so leicht wie möglich sein sollte ist das mit checkboxn gemacht.

das heisst zur auswahl steht dann MM1, MM2, MM3, MM4 und da wird angehakt wer daran gearbeitet hat.


Die Berechneten Tage heissen nicht STD? sondern die Differenzstunden. also startzeit 14 uhr ende 15 uhr = 1 h (STD).

najo die reservierten Wörter und Benamsungen sind deswegen weil man diese so im forum findet.. die ganzen "formeln und Codes" wurden ja zusammengesucht und nicht selbst erstellt. das hier jetzt alles ein bisschen blöd benamt ist kann schon sein aber als vollnoob stückelt man sich alles so zusammen das es irgendwie klappt. wenn ich alles neu machen soll weils so nicht klappt ist das ja kein problem.. nur muss ich wissen was ich anders machen muss




dafacey

#10
OK so alles NEU

hab nun das Hauptproblem gefunden!

MIN MAX und so zeugs klappt jetzt alles! der fehler liegt irgendwie am Mitarbeiter.
1 Mitarbeiter = alles ok
ab 2 Mitarbeiter wird natürlich wieder alles aufgeschlüsselt.. was auch logisch ist.

also M1  arbeitet von 8 - 16 Uhr
und ab 16 bis 17 Uhr arbeiten M1 und M2 zusammen an dem Projekt.
   
1   01.01.2020   08:00:00   16:00:00   00:30:00      9,5   38,5   07:30:00   M1   
2   01.01.2020   16:00:00   16:30:00   00:00:00      0,5   38,5   00:30:00   M1   M2

kann ich die Mitarbeiter auf SUM setzen? oder ist mein gedankengang hier falsch? oder geht das mit einer filterung?   oder muss ich für jeden mitarbeiter eine eigene abfrage erstellen?

die zwei mitarbeiter müssen NICHT beide angezeigt werden.. ich will sowieso jeden mitarbeiter extra gefiltert. jedoch sind bei der eingabe der daten beide mitarbeiter um diese uhrzeit beschäftigt. ich filtere aber nicht nach projekt sondern nur die gesamtstunden.

es kitzelt schon im finger... ich spür ich bin kurz davor. es braucht nur noch einen schlauen kopf der mir hier sagt wos lang geht.

Wenn man für jeden Mitarbeiter eine eigene Tabelle hat die durch die checkboxn gefüttert werden.. und dann von jeder Tabelle eine eigene Abfrage macht, dann müsste das ja klappen? wäre das sinnvoller als hier rumzutüfteln? ich will nur nicht jeden Tag mit allen Zeiten 10x eingeben wenn 10 mitarbeiter dran gearbeitet haben...

also irgendwie Wenn ich M1 checkbox dann speicher in M1 und wenn ich M1 + M2 anhake dann speicher in M1 und M2? ist das klüger? über ein Eingabeformular?