m-hans
Goto Top

Access - Berichterstellung eines gewählten Datums

Hallo,

ich habe eine minimal Access Datenbank erstellt mit einem Formular über das ich meine gewünschten Daten eingebe. Unter andern ist dort das Datum des Beginn und der Fertigstellung vorhanden. Ich habe des weiteren einen Bericht erstellt der mir die Tagesübersicht eines gewählten Tages darstellen soll. Allerdings gibt er alle Datensätze aus. Über eine Schaltfläche (Tagesübersicht) im Formular soll der Bericht nur mit Datensätzen von diesem Datum ausgegeben werden. Eigentlich nur vom aktuellen Tag, da dieser Bericht täglich gedruckt wird. Sollte man es aber mal vergessen haben werde ich noch ein Auswahlfeld einrichten welches das gewünschte Datum beinhaltet.

Ich habe es mit der date() Funktion als Filter versucht aber das scheint nicht zu gehen. Im Formularkopf geht das allerdings.

Kann mir jemand behilflich sein?

Grüße

PS: Tippe vom Handy. Rechtschreibfehler und Formatierung bitte ignorieren. Danke face-wink

Content-ID: 235044

Url: https://administrator.de/contentid/235044

Ausgedruckt am: 23.11.2024 um 03:11 Uhr

colinardo
Lösung colinardo 10.04.2014 aktualisiert um 13:50:43 Uhr
Goto Top
Hallo m-hans,
dafür gibt es mehrere Möglichkeiten, eine davon ist dieser VBA-Code um einen Bericht nach einem Datums-Feld gefiltert zu öffnen:
In diesem Beispiel sind txtDate1 und txtDate2 die Textboxen in denen die Datumswerte stehen. In Zeile 3 musst du noch den Namen des Berichtes (DEINBERICHT) angeben und den Namen der Datumsspalte (DATUMSSPALTE) in deinem Bericht anpassen. Dann wird der Report mit den angegebenen Dati gefiltert. Wenn du dann beide Datumsfelder auf das gleiche Datum setzt wird auch nur der eine Tag angezeigt.
dateVON = Format(DateValue(Me.txtDate1.Value), "yyyy-mm-dd")  
dateBIS = Format(DateValue(Me.txtDate2.Value, "yyyy-mm-dd")  
DoCmd.OpenReport "DEINBERICHT", acViewPreview, , "DATUMSSPALTE BETWEEN #" & dateVON & "# AND #" & dateBIS & "#"  
Eine andere Möglichkeit verwendet eine Abfrage als Datenquelle für den Bericht, in der dann in den Kriterien der Datumsspalte auf die Textfelder des Formulars verwiesen wird.

Hoffe das war soweit verständlich ausgedrückt.

Grüße Uwe
m-hans
m-hans 10.04.2014 aktualisiert um 12:23:22 Uhr
Goto Top
Hi Uwe...

Das sieht genau nach dem aus was ich suche...
Mit der DoCmd.OpenReport hatte ich schon angefangen, hab aber nichts funktionierendes zustande bekommen.
Wahrscheinlich weil ich die ganze Zeil Where edingung als Filter stehen hatte - sprich ein "," vergessen.

Probier ich in der Mittagspause gleich mal aus. Danke!

Edit: Funktioniert! Astrein... Vielen Dank...

Eine Frage aber noch: Kannst du mir den Aufbau der WHERE Bedingung mal erklären? Wie setzt sich die zusammen? Steige da nicht hinter face-sad
Mal angenommen ich möchte nur die "dateBIS" auslesen und im Bericht angezeigt haben, geht das auch ohne "dateVON" auf den gleichen Wert zu setzen?
colinardo
Lösung colinardo 10.04.2014 aktualisiert um 13:50:48 Uhr
Goto Top
Zitat von @m-hans:
Mal angenommen ich möchte nur die "dateBIS" auslesen und im Bericht angezeigt haben, geht das auch ohne
"dateVON" auf den gleichen Wert zu setzen?
sorry, hatte nur durch Zufall deine zusätzliche Frage in deinem bearbeiteten Post gesehen...
Klar also wenn du alles bis zu einem bestimmten Datum(und inkl. diesem) haben möchtest machst du es so:
DoCmd.OpenReport "Datumsbericht", acViewPreview, , "DATUMSSPALTE <= #" & dateBIS & "#"
oder nur einzelnes bestimmtes Datum filtern:
DoCmd.OpenReport "Datumsbericht", acViewPreview, , "DATUMSSPALTE = #" & dateBIS & "#"
Ein Datum muss in Access mit Rauten '#' umschlossen werden und im Format yyyy-mm-dd vorliegen.
Der Syntax des Filters ist normale SQL-Syntax nur ohne das Schlüsselwort WHERE: http://www.w3schools.com/sql/sql_where.asp

Grüße Uwe
m-hans
m-hans 10.04.2014 um 13:50:26 Uhr
Goto Top
Suuuuper... der Tip mit der # ist ein MUSS bei Access war Gold wert!

Hatte es vorher so
DoCmd.OpenReport "Datumsbericht", acViewPreview, , "datum = " & dateBIS

Da kam aber nichts raus. Leerer Bericht!

Mit der Raute klappt es. Danke vielmals...

Gelöst!