Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Problem mit openReport Funktion

Begonnen von Oimel1987, Januar 06, 2011, 21:41:54

⏪ vorheriges - nächstes ⏩

Oimel1987

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:
IDBaustelleMitarbeiterdatumzeit

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 Sub


Problem: 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

DF6GL

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.
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Oimel1987

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?

Oimel1987

Ah und as wichtigste die Fehlermeldung kommt immernoch bzw die Parametereingabe fürs datum

DF6GL

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.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Oimel1987

Mein Bericht soll später wie folgt aussehen::

Zeitraum: 01.11.2010 - 01.01.2011


MitarbeiterBaustelleStunden
Max MusterknabeOttrau210,5
Max MusterknabeBielefeld200
Reiner ZufallOttrau250,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 ?

database

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]

Oimel1987

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

database

#8
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 ;)

Oimel1987

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 ;)

database

#10
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]

Oimel1987

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

database

Hallllllooooo!

Freut mich, wenn's geholfen hat - aber zum Gott braucht's noch ein wenig!  :D :D :D

Oimel1987

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

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

database

#14
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]