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 !
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 !
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 47757
Url: https://administrator.de/forum/bericht-aus-einem-formlar-nur-mit-datensaetze-eines-bestimmten-datum-drucken-47757.html
Ausgedruckt am: 23.12.2024 um 15:12 Uhr
22 Kommentare
Neuester Kommentar
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..
[/Edit]
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)"
Moin blackangel,
das sind doch aber noch Taaaaaaaage bis zum Wochenende...
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
das sind doch aber noch Taaaaaaaage bis zum Wochenende...
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
aber wieder ma ne Fehlermeldung
Eher eine allgemeine, die Du ohne zu Lesen weggeklickt hast, oder stand etwas für uns Mitleser interessantes drin? 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
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:
Den habe ich minimal erweitert auf
...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..
Gruß
Biber
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
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
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..
Gruß
Biber
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
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.
Gruß
Biber
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
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
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):
Grüße
Biber
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