Hallo Leute,
ich habe folgendes Problem:
Ich möchte Arbeitsstunden summieren, die zwischen einem bestimmten Zeitintervall aufgetreten sind.
Ich weiss bloß nicht wie genau.
Meine Tabelle:
| ID | Baustelle | Mitarbeiter | datum | zeit |
Die SQL Abfrage als Datensatzherkunft zum Bericht:
SELECT Arbeitszeit.Mitarbeiter, Arbeitszeit.Baustelle, Sum(Arbeitszeit.zeit) AS Summevonzeit
FROM Arbeitszeit
GROUP BY Arbeitszeit.Mitarbeiter, Arbeitszeit.Baustelle;Mein VBA Code zum Öffnen des Berichts:
Private Sub Befehl1_Click()
Dim MitarbeiterID As Integer
Dim BaustellenID As Integer
Dim dVon As Date
Dim dBis As Date
Dim sWHERE As String
MitarbeiterID = Val(Me.Mitarbeitername)
BaustellenID = Val(Me.Kombinationsfeld8)
dVon = CDate(Me!von)
dBis = CDate(Me!bis)
sWHERE = "datum BETWEEN #" & Format(dVon, "dd\-mm\-yyyy") & "# AND #" & Format(dBis, "dd\-mm\-yyyy") & "#"
DoCmd.Close acReport, "Mitarbeiter Bericht", acSavePrompt
DoCmd.OpenReport "Mitarbeiter Bericht", acViewPreview, , sWHERE, acWindowNormal, sArgs
End SubProblem: Mit diesem Code bekomme ich immer ein Popup wo ich das datum eingeben / definieren soll.
Wohl gemerkt habe ich bewusst das datum aus dem SELECT draußen gelassen damit ich alles zusammen summiert bekomme und die summierung nicht datumsabhängig verläuft.
Wie bekomme ich die Summierung richtig hin ?
Vielen Dank im voraus
Bitte um schnellst mögliche AW
Mit freundlichen Grüßen
Oimel
Hallo,
etwa so:
Private Sub Befehl1_Click()
Dim MitarbeiterID As Long
Dim BaustellenID As Long
Dim dVon As Date
Dim dBis As Date
Dim sWHERE As String
MitarbeiterID = Val(Me.Mitarbeitername) ' sehr fragwürdig diese Mutierung eines Namens zu einem numerischen Wert
BaustellenID = Val(Me.Kombinationsfeld8)
dVon = nz(Me!von,Date)
dBis = nz(Me!bis,Date)
sWHERE = "datum BETWEEN #" & Format(dVon, "yyyy\-mm\-dd") & "# AND #" & Format(dBis, "yyyy\-mm\-dd") & "#"
[sDoCmd.Close acReport, "Mitarbeiter Bericht", acSavePrompt [/s] 'Warum ? Ist der Bericht noch geöffnet?
DoCmd.OpenReport "Mitarbeiter Bericht", acViewPreview, , sWHERE, acWindowNormal, sArgs
End Sub
Weiterhin sollte nicht(!) in der Berichtsabfrage gruppiert/sortiert werden, sondern im Bericht selber:
SELECT * , Sum(Arbeitszeit.zeit) AS Summevonzeit FROM Arbeitszeit
Evtl. auch die Summierung sollte dort erledigt werden..., dann:
SELECT * FROM Arbeitszeit
oder gleich nur den Tabellennamne in der Datenherkunft des Berichtes angeben.
So erstmal danke soweit, aber leider sind wir noch nicht am Ziel.
Zum einen bekomme ich nun nicht die gesamtsumme an Stunden sondern die Summe der Stunden abhängig vom Monat über diese Variante zurück. Ich erhalte bei SELECT * , Sum(Arbeitszeit.zeit) AS Summevonzeit FROM Arbeitszeit einer Fehlermeldung das die Summevpnzeit nicht als Aggregatfunktion definiert wurde.
Ich habe bsiher immer über die Abfrage gruppiert bzw gefiltert. Was ist daran falsch? Und wie gruppiere bzw filtere ich über den bericht selbst?
Ah und as wichtigste die Fehlermeldung kommt immernoch bzw die Parametereingabe fürs datum
Halo,
ja, Sternchen und Sum ohne Gruppierung beißt sich. Deshalb wird mein letzter Hinweis im letzten Posting zum Tragen kommen müssen.
Weiterhin: Wenn ein Parameterfenster für "Datum" kommt, dann gibt es dieses Feld nicht in der Tabelle.
Ich versteh nun aber nicht (mehr), was Du eigentlich berechnen willst:
Stundensumme über alle Tabelleneinträge oder Stundensumme über den angebenen Zeitbereich?
"Ich habe bsiher immer über die Abfrage gruppiert bzw gefiltert. Was ist daran falsch? "
Ein Bericht schert sich hinterher nicht mehr um die Gruppierung/Sortierung der Abfrage
"Und wie gruppiere bzw filtere ich über den bericht selbst?"
Im Berichtsentwurf das Fenster "Gruppieren/Sortieren" öffnen und dort die Angaben einstellen.
Mein Bericht soll später wie folgt aussehen::
Zeitraum: 01.11.2010 - 01.01.2011
| Mitarbeiter | Baustelle | Stunden |
| Max Musterknabe | Ottrau | 210,5 |
| Max Musterknabe | Bielefeld | 200 |
| Reiner Zufall | Ottrau | 250,5 |
Wie kann ich das am besten Bewerkstelligen?
Bislang habe ich einen Dialog, wodurch man den Mitarbeiter, die Baustelle und den Zeitraum auswählen kann und dann mit der obigen WHERE anweisung gefiltert werden soll. Das funzt aber nicht.
Ich habe weiterhin das Feld datum überprüft und es wird richtig geschrieben ---> evtl ein reserviertes Wort ?
Hallo,
ZitatIch habe weiterhin das Feld datum überprüft und es wird richtig geschrieben ---> evtl ein reserviertes Wort
Ich glaube, dass du im Bericht ein Feld stehen hast, dass dieses Problem verursacht.
Ich hab mich mal ein wenig herumgespielt und ein kleines Beispiel erstellt, in dem die Arbeitszeit nach Mitarbeiter und Baustellen wählbar angezeigt werden kann.
Vielleicht kannst du an Hand des Beispiels in deiner DB den Bericht erstellen und anpassen ;)
HTH
[Anhang gelöscht durch Administrator]
Ich wüsste spontan nicht welches Element das sein könnte.
könntest du mir evtl dein Beispiel mal hochladen ? Ich komme echt nicht weiter.
Danke vielmals
ZitatIch wüsste spontan nicht welches Element das sein könnte.
KÖNNTE u.U. ein Feld sein, das du beim Gruppieren angegeben hast aber nicht mehr im Bericht existiert.
Zitatkönntest du mir evtl dein Beispiel mal hochladen
das wäre es ja - also nur einfach runterladen ;)
Jo Danke fürs beispiel.
Leider ist es so auch nicht zu gebrauchen.
Ich wollte die Einzelstunden nicht sichtbar haben sondern wirklich nur die gesamtzahl wie im obigen Beispiel.
Ich lade in 20 mins nomma nen screenshot hoch mit deinem stand nur mit dem was wegfallen soll ;)
Hallo,
ZitatIch wollte die Einzelstunden nicht sichtbar haben sondern wirklich nur die gesamtzahl wie im obigen Beispiel
Na dann nimm das Feld 'Zeit' einfach raus - dann hast du diese Einzelstunden nicht mehr in der Anzeige sondern nur die Summe.
Das Summenfeld stellst du in den Kopfbereich der Baustelle also auf die gleiche Ebene.
Nimmst du dann das Datum auch noch weg erhältst du auch nur eine Zeile pro Baustelle und Mitarbeiter.
Der entsprechend geänderte Bericht befindet sichj im Anhang
HTH
[Anhang gelöscht durch Administrator]
Yeah das ists jetzt setz ich das nurnoch so 1:1 in meinem um. Thx a Lot.
Ab Heute nenn ich dich GOTT xD
Gott sei Dank xD
Hallllllooooo!
Freut mich, wenn's geholfen hat - aber zum Gott braucht's noch ein wenig! :D :D :D
Sers ich bins schon wieder,
ich steh total aufm schlauch ich weiss nicht wie du diese Gruppierung hinbekommen hast bzw wie du es geschafft hast, dass das datum zusammengefasst wird und somit wirklich dort nur die einzelnen Baustellen stehen.
Ich bin echt ratlos und stehe unter starken Zeitdruck.
Habe nun einmal bei uploaded.to meine DB hochgeladen und gebe euch hiermal den Link dazu in der Hoffnung das ihr mir helfen könnt.
http://ul.to/rvyt27 (http://ul.to/rvyt27)
Es geht alles in allem um den Mitarbeiter Bericht.
Wie schon mehrfach erwähnt sollen die Gesamtarbeitsstunden eines Mitarbeiters an einer Baustelle erfasst werden zu einem vorgegebenem Zeitraum.
HIILLLFEEEE
Vielen Dank bitte meldet euch so bald es geht
Na na, nur mit der Ruhe ...
im Anhang die geänderte Version deines Beispiels mit dem 'Mitarbeiter-Bericht'
Habe in der Abfrage das Feld 'Name' auf 'MAName' geändert - KEINE reservierten Worte, Leer- oder Sonderzeichen verwenden, das ist Gift!
Ivh habe die Feldbezeichungen und die Codes für das Formular 'Mitarbeiter Bericht' ebenfalls geändert und angepasst!
Wenn es weitere Berichtsaufrufe gibt musst du das in den entsprechenden Formularen ebenfalls nach diesem Muster anpassen!
Die Beziehungen habe ich ebenfalls korrigiert.
HTH
p.s. Im Anhang befindet sich die aktualisierte Version!!!!
[Anhang gelöscht durch Administrator]