Hallo zusammen,
ich öffne einen Bericht, der seine Daten über eine Abfrage bekommt.
Nun möchte ich, dass wenn die Abfrage keine Daten ermitteln kann und somit der Bericht leer wäre, dass der Bericht gar nicht erst geöffnet wird, sondern eine MsgBox mit entsprechendem Hinweis erscheint.
Wie kann ich das realisieren?
Grüße
Hallo,
wie öffnest Du den Bericht und wie sieht die Abfrage aus (SQL) ?
Am einfachsten ist es aber das Berichtsereignis "Bei ohne Daten" (Report_NoData) zu nutzen, dann wird der Bericht nach einer Meldung sofort wieder geschlossen.
Hallo Klaus,
hier der code:
Private Sub button_Historie_Click()
If IsNull(Datum_Historie) Then
MsgBox "Bitte zuerst ein Datum angeben!"
Me!Datum_Historie.SetFocus
GoTo ende
End If
DoCmd.OpenReport "rpt_Historie", acViewReport
ende:
End Sub
Hallo,
und was ist mit der Abfrage ?
Ich habe oben noch was nachgetragen.
PS:
Sprungbefehle wie GoTo sind unüblich und meist überflüssig.
Statt GoTo Ende schreibe lieber Exit Sub.
...läuft super mit dem geänderten Berichtsereignis....
Vielen Dank
Andreas
Zitat von: MzKlMu am Februar 15, 2022, 17:15:37Statt GoTo Ende schreibe lieber Exit Sub.
Ich würde hier das
DoCmd.OpenReport in einen Else-Zweig zu dem If packen. Dann wird m.M. noch deutlicher, dass hier entweder das eine oder das andere passiert.
Alles in einem, -
Private Sub button_Historie_Click()
If IsNull(Datum_Historie) Then
MsgBox "Bitte zuerst ein Datum angeben!"
Me!Datum_Historie.SetFocus
ElseIf DCount("*", "DeineAbfrage") = 0 Then
MsgBox "Keine Daten!"
Else
DoCmd.OpenReport "rpt_Historie", acViewReport
End If
End Sub
edit: Falls der Bericht die Abfrage noch einmal filtert, musst du diese Filterbedingung
im DCount ergänzen (3. Parameter).