Mai 25, 2022, 12:31:46

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Bericht/Abfrage leer, dann MsgBox

Begonnen von Lalikowski, Februar 15, 2022, 16:57:51

⏪ vorheriges - nächstes ⏩

Lalikowski

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

MzKlMu

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.
Gruß
Klaus

Lalikowski

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

MzKlMu

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.
Gruß
Klaus

Lalikowski

...läuft super mit dem geänderten Berichtsereignis....

Vielen Dank

Andreas

PhilS

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.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Beaker s.a.

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).
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.