blackangel
Goto Top

Bericht aus einem Formlar nur mit Datensätze eines bestimmten Datum drucken.

Hallo,

ich versuche gerade einen Bericht aus einem Formular zu drucken(Über eine Schaltfläche). Dieser soll aber nur alle Datensätze von einem Datum drucken, das in einem Feld "Datum" steht.
Ist das überhaupt möglich?
Könnte man sowas auch über ein Popup machen?

Momentan habe ich folgendes im Code stehen:

DoCmd.OpenReport "Bericht", acViewPreview, , "Datum='" & Me!Datum

Das funktioniert aber natürlich nicht !

Content-Key: 47757

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

Printed on: April 18, 2024 at 09:04 o'clock

Member: Dani
Dani Jan 02, 2007 at 16:44:08 (UTC)
Goto Top
Hi,
also auf den richtigen Weg bist au auf jeden Fall.

So müsste es eigentlich gehen:
DoCmd.OpenReport "Bericht",acPreview , , "Datum = '" & Me!Datum & "'"  

Gruß
Dani
Member: Blackangel
Blackangel Jan 02, 2007 at 17:02:00 (UTC)
Goto Top
Hallo,
leider haut es nicht hin.
Access gibt folgenden Fehler zurück:
"Datentyp in Kriterienausdruck unverträglich"

Leider habe ich schon ewigkeiten nicht mehr mit access gearbeitet, ich wette das ist irgendeine ganz einfach Sache! face-smile

Wie sieht das aus mit so einem Popup wäre sowas auch möglich?
Member: Dani
Dani Jan 02, 2007 at 17:08:41 (UTC)
Goto Top
Hi,
was meinst du mit PopUp bzw. für welchen Zweck denn??


Dann probier's mal so:
DoCmd.OpenReport "Bericht", acPreview, , "Datum =" & Me!Datum  
´
Das ist nicht die Zeile von dir. Bei dir war noch ein " ' " drinne!


Gruß
Dani
Member: Blackangel
Blackangel Jan 02, 2007 at 17:37:23 (UTC)
Goto Top
Hi,
leider passt das auch nicht diesmal folgender Fehler:
"Syntaxfehler in Zahl in Abfrageausdruck '(Datum=26.12.2006)'."

Mit Popup meine ich, das ein Fenster aufgeht sobald man auf die Schaltfläche klickt und hier kann man dann z.b. das Datum eingeben das nur von diesem Datum gedruckt werden soll.
Ich hoffe das war nicht kompliziert.
Member: Biber
Biber Jan 02, 2007 at 18:36:47 (UTC)
Goto Top
Moin Blechengel,

probier es mal bitte so:
DoCmd.OpenReport "Bericht",acPreview , , "Datum = #" & Me!Datum & "#"
-oder, etwas weniger fehlerträchtig-
DoCmd.OpenReport "Bericht",acPreview , , "Datum = #" & Format(Me.Datum, "dd.mm.yyyy") & "#"

HTH
Biber
Member: Blackangel
Blackangel Jan 02, 2007 at 20:47:27 (UTC)
Goto Top
Hi,
also bei numero UNO tritt folgender Fehler auf:
Syntaxfehler in Datum in Abfrageausdruck'(Datum=#26.12.2006#)'.
bei numero zwei:
Das Gleiche nochmal!
Kann das irgendwie mit dem Bericht zusammenhängen?
Nurmal so am Rande?
Member: Biber
Biber Jan 02, 2007 at 20:55:04 (UTC)
Goto Top
Hmmm, merkwürdig....

Nicht hauen, aber.... das Feld "Datum" ist auch ein Datumsfeld? Oder "nur" ein Prosa-Textfeld?

Ich würde jetzt erstmal im Abfrage-"SQL"-Editor die richtige Syntax ausprobieren.
So bockig kann doch nicht mal M$-Access sein...eigentlich...

Etwas ratlos
Biber
[Edit] sonst, was ich noch im Ärmel hätte, wäre..
..., "datum=cdate(Me!Datum)"  
[/Edit]
Member: Blackangel
Blackangel Jan 02, 2007 at 21:27:14 (UTC)
Goto Top
Super hat geklappt. Echt klasse!
Nur zur Info wie jetzt der Befehl heißt:
stDocName = "Bericht"
DoCmd.OpenReport stDocName, acPreview, , "datum=cdate(Me!Datum)"

Wundert eucht nicht das ich jetzt eine stDocName gesetzt habe, ich habe nur etwas rumprobiert.

Eine Frage hätte ich danoch. Hier geht ja jetzt ein Fenster auf mit:
"Parameter Werte eingeben" und dann darunter
"Me!Datum" gibt es hier eine Möglichkeit das da "Bitte Datum eingeben" steht?
Member: Blackangel
Blackangel Jan 03, 2007 at 16:13:42 (UTC)
Goto Top

Eine Frage hätte ich danoch. Hier geht
ja jetzt ein Fenster auf mit:
"Parameter Werte eingeben" und
dann darunter
"Me!Datum" gibt es hier eine
Möglichkeit das da "Bitte Datum
eingeben" steht?

Gibt es dazu eine Lösung oder geht das überhaupt nicht?
Wie sieht es eigentlich aus wenn ich das mit einem Datum von ... bis Datum haben will?

Gurß
Tim
Member: Blackangel
Blackangel Jan 04, 2007 at 11:15:31 (UTC)
Goto Top
Sorry das ich etwas ungeduldig bin. Ich muss aber die erste Version der Datenbank bis zum Wochenende fertig bekommen.
Bitte sagt mir einfach ob sowas möglich ist oder nicht!
Member: Biber
Biber Jan 04, 2007 at 11:33:03 (UTC)
Goto Top
Moin blackangel,

das sind doch aber noch Taaaaaaaage bis zum Wochenende... face-wink

M$-Access ist nicht mein Fachgebiet - da gibt es sicherlich im Forum einige, die da fitter sind.
Ich als Laie würde eine kleine briefmarkengroße SubForm mit zwei Eingabefeldern "VonDatum" und "BisDatum" vor den Report setzen.
Und nachdem beide Felder (geprüft) gefüllt sind, den Report aufrufen.
Das wäre die Strategie - Details kann ich nicht liefern.

Gruß
Biber
Member: Blackangel
Blackangel Jan 04, 2007 at 13:29:44 (UTC)
Goto Top
Servus,

mit Subform nehme ich an meinst du Unterformular?
Wenn ja, dann haben wir schon den Salat da ich eigentlich kein Platz mehr für ein Unterformular habe.
Könnte man das evtl. mit zwei ungebundenen Felder machen? bzw. die zwei Felder füllen und dann auf Button klicken?

Gruß
Tim
Member: Biber
Biber Jan 04, 2007 at 13:53:02 (UTC)
Goto Top
Moin blackangel,

Ja, ich meinete ein (hochpoppendes) Unterformular, aber selbstverständlich gehen auch zwei ungebundene Felder im offenen Formular.
Und die dann eben (sinngemäß) ansprechen über [HauptFormular]!VonDatum und [Hauptformular]!BisDatum.

Gruß
Biber
Member: Blackangel
Blackangel Jan 04, 2007 at 15:00:56 (UTC)
Goto Top
Hi,
also ich habe jetzt mal zwei ungebundene Felder erstellt dazu eine Schaltfläche:
Jetzt bräuchte ich nur noch den passenden Befehl dazu. Soweit bin ich gekommen habe aber wieder ma ne Fehlermeldung face-wink

DoCmd.OpenReport stDocName, acPreview, , [where "datum=cdate(Me!Datum)" between (Me!vondatum) And (Me!bisdatum)]

Ich glaube ich habe falsch angesetzt oder?
Member: Biber
Biber Jan 04, 2007 at 15:13:18 (UTC)
Goto Top
aber wieder ma ne Fehlermeldung
Eher eine allgemeine, die Du ohne zu Lesen weggeklickt hast, oder stand etwas für uns Mitleser interessantes drin? face-wink

Mein Ansatz wäre ja, im Click-Ereignis der Schaltfläche
- prüfen, ob VonDatum und BisDatum gefüllt und plausibel sind
- wenn ja, den Report anschubsen mit der Zeile wie oben gepostet.

Wie sieht denn Dein Aufruf aus?

Biber
Member: Blackangel
Blackangel Jan 04, 2007 at 15:30:05 (UTC)
Goto Top
Fehler ist:
"Microsoft Access kann das in Ihrem Ausdruck angesprochene Feld "|" nicht finden."

Ich habe aber kein Feld mit "|" angegeben.
Wie sähe den die Plausibilitätsprüfung aus von daher habe ihc momentan noch keine Ahnung bzw. mir fallen die Befehle nicht ein!
Ganz vergessen vorhin!
Mein Aufruf lt.:
DoCmd.OpenReport stDocName, acPreview, , [where "datum=cdate(Me!Datum)" between (Me!vondatum) And (Me!bisdatum)]
Member: Biber
Biber Jan 04, 2007, updated at May 24, 2012 at 06:02:40 (UTC)
Goto Top
Ist doch schon nah dran, blackangel,

ich hab vorhin auf dem Spiel-PC meiner Tochter tatsächlich noch ein M$-Access gefunden (zwar ein 2000er, aber schon in bunt).
Und Folgendes getan:
- eine Tabelle "BlechEngel" angelegt mit einem Datumsfeld "Testdatum" und einem Textfeld "Ereignis"
- Standard- Bericht dazu anlegen lassen über den Assistenten/die Assistentin
- Standard- Formular dazu anlegen lassen
- Da zwei Felder "VonDatum" und "Bsdatum" (leider mit diesem Tippfehler ohne "i") reingekloppt und eine Schaltfläche
- Mich bei der Schaltfläche wieder beraten lassen von diesem Stützräder-Krams und folgenden Code für das Schaltflächen-Click-Ereignis erhalten:
Private Sub Bericht_Click()
On Error GoTo Err_Bericht_Click
    Dim stDocName As String
    stDocName = "BlechEngel"  
    
    DoCmd.OpenReport stDocName, acPreview


Exit_Bericht_Click:
    Exit Sub

Err_Bericht_Click:
    MsgBox Err.Description
    Resume Exit_Bericht_Click
    
End Sub
Den habe ich minimal erweitert auf
Private Sub Bericht_Click()
On Error GoTo Err_Bericht_Click
    Dim stDocName As String
    stDocName = "BlechEngel"  
 If Not (IsNull(CDate(Me.VonDatum))) And Not IsNull(CDate(Bisdatum)) Then
    MsgBox "Zeitraum:" & CDate(Me.VonDatum) & " bis " & CDate(Me.Bsdatum)  

    DoCmd.OpenReport stDocName, acPreview, , _
    "Testdatum>=CDate(' " & Me.VonDatum & "') and Testdatum<=CDate('" & Me.Bsdatum & " ')"  
Else
    
    DoCmd.OpenReport stDocName, acPreview
End If

Exit_Bericht_Click:
    Exit Sub

Err_Bericht_Click:
    MsgBox Err.Description
    Resume Exit_Bericht_Click
    
End Sub
...und dann lief es.
In Deiner Abfrage sind zwei Dinge suboptimal:
- das Schlüsselwort "where" ist überflüssig
- innerhalb des Bericht, also wenn die Variablen aufgelöst werden, existiert ja kein Me!vondatum mehr, denn Me! würde ja dann auf "Bericht" zeigen.

However, hoffentlich hast Du Dich nicht übernommen mit dem Plan, bis zum Wochenende Access zu lernen.. face-wink

Gruß
Biber
Member: Blackangel
Blackangel Jan 04, 2007 at 18:49:38 (UTC)
Goto Top
Was soll ich dazu noch sagen!
Es hat geklappt! Super! Echt Geil!
Ich wollte nicht bis zum Wochende Access lernen nur diese eine Datenbank fertig bekommen bzw. ich hatte Zeit bis zum WE.
Access lernen werde ich jetzt erst noch ich habe schon ein paar Bücher von Access geordert, aber die sind leider noch nicht da!
Vielen tausend Dank. Echt super!
Wieder was dazu gelernt! face-wink
Member: Biber
Biber Jan 04, 2007 at 19:00:56 (UTC)
Goto Top
Freut mich, blackangel,

dann hätten wir die Kuh ja erstmal vom Eis...

Nochmals aber die Anmerkung: Mit Access kenn ich mich nicht wirklich aus - ich habe es sicherlich umständlicher gemacht, als eigentlich nötig.
Also nimm es als erste Skizze - falls in den Büchern eine elegantere Lösung steht, wäre es nett, wenn Du diesen Thread nochmals ergänzt.

Und setz bitte den Beitrag auf "Gelöst", damit sich hier keiner umsonst durch unsere Trial-and-Error-Kommentare durchwühlen muss.
Gruß
Biber
Member: Untamed
Untamed Sep 27, 2007 at 07:18:24 (UTC)
Goto Top
Hi Leute,

Ich hab hier gerade gesehen das du (Biber) ziemliche ahnung von dem thema hast..
Ich verwende ungefähr den gleichen code wie du allerdings hab ich ein kleines problem...


Private Sub DatumBSuchen_Click()
On Error GoTo Err_DatumBSuchen_Click

Dim stDocName As String
Dim XDatum As String

stDocName = "Marketingbericht"

XDatum = "[erteilt am] >= CDate(' " & Me.VonDatum & "') and [erteilt am] <= CDate('" & Me.BisDatum & " ')"

If Not (IsNull(CDate(Me.VonDatum))) And Not IsNull(CDate(Me.BisDatum)) Then
MsgBox "Sie haben den Zeitraum von " & CDate(Me.VonDatum) & " bis " & CDate(Me.BisDatum) & " ausgewählt"

DoCmd.OpenReport stDocName, acPreview, , XDatum

Else

DoCmd.OpenReport stDocName, acPreview

End If

Exit_DatumBSuchen_Click:
Exit Sub

Err_DatumBSuchen_Click:
MsgBox Err.Description
Resume Exit_DatumBSuchen_Click

End Sub


Jetzt möchte ich noch zudem... auch noch die eintrage mit leerem 'erteilt am' feld in dem bericht sehen....

Wäre echt Super wenn mir jemand helfen könnte.


Danke im voraus

Gruß

Untamed
Member: Biber
Biber Sep 27, 2007 at 09:28:59 (UTC)
Goto Top
Moin Untamed,

in diesem Fall brauchst Du nur die Bedingung so erweitern, dass auch Datensätze mit keinem [erteilt am]-Wert
oder auf accessisch " or [erteilt am] is null" mit in die XDatum-Klausel fallen.

Also in der Theorie (ungetestet):
...
XDatum = "([erteilt am] is null) OR "   
XDatum = XDatum & "([erteilt am] >= CDate(' " & Me.VonDatum & "') and [erteilt am] <= CDate('" & Me.BisDatum & " '))"  
... 

Grüße
Biber
Member: Untamed
Untamed Sep 27, 2007 at 11:59:45 (UTC)
Goto Top
Hi Biber,

Oh man.. Ich danke dir! es geht.. Toll das es leute wie dich gibt die sich die zeit nehmen!

DANKE

Gruß

Untamed