Access-o-Mania

Access-Forum (Deutsch/German) => Access-Hilfe => Thema gestartet von: Lalikowski am Februar 15, 2022, 16:57:51

Titel: Bericht/Abfrage leer, dann MsgBox
Beitrag von: Lalikowski am Februar 15, 2022, 16:57:51
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
Titel: Re: Bericht/Abfrage leer, dann MsgBox
Beitrag von: MzKlMu am Februar 15, 2022, 17:10:24
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.
Titel: Re: Bericht/Abfrage leer, dann MsgBox
Beitrag von: Lalikowski am Februar 15, 2022, 17:13:08
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
Titel: Re: Bericht/Abfrage leer, dann MsgBox
Beitrag von: MzKlMu am Februar 15, 2022, 17:15:37
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.
Titel: Re: Bericht/Abfrage leer, dann MsgBox
Beitrag von: Lalikowski am Februar 15, 2022, 17:25:27
...läuft super mit dem geänderten Berichtsereignis....

Vielen Dank

Andreas
Titel: Re: Bericht/Abfrage leer, dann MsgBox
Beitrag von: PhilS am Februar 15, 2022, 21:10:07
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.
Titel: Re: Bericht/Abfrage leer, dann MsgBox
Beitrag von: Beaker s.a. am Februar 17, 2022, 11:58:48
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).