Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Oimel1987 am Januar 06, 2011, 21:41:54

Titel: Problem mit openReport Funktion
Beitrag von: Oimel1987 am Januar 06, 2011, 21:41:54
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
Titel: Re: Problem mit openReport Funktion
Beitrag von: DF6GL am Januar 06, 2011, 23:16:00
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.
Titel: Re: Problem mit openReport Funktion
Beitrag von: Oimel1987 am Januar 07, 2011, 08:57:48
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?
Titel: Re: Problem mit openReport Funktion
Beitrag von: Oimel1987 am Januar 07, 2011, 09:16:28
Ah und as wichtigste die Fehlermeldung kommt immernoch bzw die Parametereingabe fürs datum
Titel: Re: Problem mit openReport Funktion
Beitrag von: DF6GL am Januar 07, 2011, 09:27:03
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.

Titel: Re: Problem mit openReport Funktion
Beitrag von: Oimel1987 am Januar 07, 2011, 13:01:08
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 ?
Titel: Re: Problem mit openReport Funktion
Beitrag von: database am Januar 07, 2011, 14:46:32
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]
Titel: Re: Problem mit openReport Funktion
Beitrag von: Oimel1987 am Januar 07, 2011, 16:08:52
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
Titel: Re: Problem mit openReport Funktion
Beitrag von: database am Januar 07, 2011, 16:24:45
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 ;)
Titel: Re: Problem mit openReport Funktion
Beitrag von: Oimel1987 am Januar 07, 2011, 16:47:19
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 ;)
Titel: Re: Problem mit openReport Funktion
Beitrag von: database am Januar 07, 2011, 16:50:13
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]
Titel: Re: Problem mit openReport Funktion
Beitrag von: Oimel1987 am Januar 07, 2011, 17:09:16
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
Titel: Re: Problem mit openReport Funktion
Beitrag von: database am Januar 07, 2011, 17:20:51
Hallllllooooo!

Freut mich, wenn's geholfen hat - aber zum Gott braucht's noch ein wenig!  :D :D :D
Titel: Re: Problem mit openReport Funktion
Beitrag von: Oimel1987 am Januar 08, 2011, 11:21:08
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
Titel: Re: Problem mit openReport Funktion
Beitrag von: database am Januar 08, 2011, 12:02:33
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]