Januar 19, 2021, 07:07:50

Neuigkeiten:

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


Leeren Bericht nicht senden

Begonnen von HubertN, Dezember 03, 2020, 12:10:45

⏪ vorheriges - nächstes ⏩

HubertN

Hallo zusammen,

Ich habe ein Formular mit einem Unterformular.
In diesem Unterformular können mehrere Aufgaben zum jeweiligen Datensatz anfallen.
Aus diesem Formular heraus erzeuge ich einen Bericht in Format PDF und sende in per E-Mail.

Im Bericht steht laut meiner Auswahl genau das was ich wollte.
Der VBA Code dazu:

      DoCmd.OpenReport "rptAufgaben", acViewReport, windowmode:=acHidden, WhereCondition:="[Nummer] = '" & Me![Nummer] & "'"
      DoCmd.SendObject acSendReport, "rptAufgaben", acFormatPDF
      DoCmd.Close acReport, "rptAufgaben"

Wenn Daten vorhanden sind läuft alles so wie ich es vorgesehen habe.
Es werden nur die Daten des Steuerelements "Nummer" im Bericht angezeigt.

Im Bericht selber habe ich als Ereignisprozedur die "Report_noData" verwendet.
Da kommt dann auch die Meldung das der Bericht keine Daten enthält.

Nun mein Problem:
Wenn aber der Bericht lt. meiner vorherigen Auswahl leer ist, wird er trozdem erzeugt, allerdings mit allen vorhandenen Daten der übrigen Hauptdatensätze.

Kann man das irgendwie lösen das wenn der Bericht leer ist, die weitere Verabreitung (trotz be-ja-ung des Abruches) unterbrochen wird?
Vielen Dank schon einmal.
Grüße HubertN




Beaker s.a.

Hallo Hubert,
Diese Prozedur bietet dir den Cancel-Parameter an. Dieser dient,
wie in allen anderen Prozeduren, die ihn anbieten, dazu die Aus-
führung des Codes zu beenden
Private Sub Report_NoData(Cancel As Integer)
    If Me.HasData Then
        'Deine DoCmd-Befehle
        'weiterer Code
    Else
        Cancel = True
    End If
End Sub

gruss ekkehard
--
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.

HubertN

Hallo ekkehard,
zuerst einmal Danke für deinen Tipp.
Aber irgendwie bekomme ich das nicht hin.

Ich habe auf der einen Seite ein Formular mit einem Button der
mir mit den ausgewählten Daten einen Bericht "erzeugt".

Jetzt kommt der Bericht ins Spiel - wenn der Bericht keine Daten enthält, soll
das Ganze abgebrochen werden.

IST Stand: wenn im Unterformular keine Daten enthalten sind, wird ein Bericht mit
allen Daten der übrigen Datensätzen angezeigt.

Aber vielleicht habe ich auch deinen Code nicht richtig verstanden bzw. umgesetzt.

Grüße HubertN

DF6GL

Hallo,

besser wäre,  vor dem Aufruf  des Reports nachzusehen (mit z. B. Dcount()), ob es DS gibt und dann zu entscheiden, ob der Report geöffnet werden soll oder nicht.

Beaker s.a.

Hallo Hubert,
ZitatAber irgendwie bekomme ich das nicht hin.
Ist ja auch völliger Quatsch, was ich da geschrieben habe; - Asche auf
mein Haupt.
Bei dem Ereignis ist der Report ja schon geöffnet.
Also so machen, wie von Franz vorgeschlagen.

gruss ekkehard
--
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.

HubertN

Danke an euch beide,
aber Franz kannst du mir hierzu einen Anstoß (Code) dazu geben.
Mein Code ist im ersten Kommentar enthalten.
Gr. HubertN

MzKlMu

Dezember 03, 2020, 19:14:26 #6 Letzte Bearbeitung: Dezember 04, 2020, 09:05:46 von MzKlMu
Hallo,
einfach vorher zählen:
   If DCount("*","Tabellenname","[Nummer] = '" & Me![Nummer] & "'") = 0 Then
      MsgBox "Der Bericht enthält keine Daten"
      Exit Sub
   End If
      DoCmd.OpenReport "rptAufgaben", acViewReport, windowmode:=acHidden, WhereCondition:="[Nummer] = '" & Me![Nummer] & "'"
      DoCmd.SendObject acSendReport, "rptAufgaben", acFormatPDF
      DoCmd.Close acReport, "rptAufgaben"
Den Code zum Ereignis "Bei ohne Daten" kannst Du löschen.

PS:
Warum nennst Du ein Feld das als Textfeld angelegt ist "Nummer" ?
Gruß
Klaus

HubertN

Hallo Klaus,
danke für deinen Beitrag, werde es morgen testen.
Zu deiner Frage:
Ich frage eine Nummer ab und filtere dann danach.
Textfeld da Alphanummerisch.
Grüße HubertN

HubertN

Hallo Klaus,
habe es so umgesetzt und funktioniert genau wie
ich mir es vorgestellt habe.
Ein kleiner Schönheitsfehler im Code nach "Tabellenname" ; kein Semikolon sondern ein ,
Vielen Dank an dich

und an die Community.

Grüße HubertN

PS: Finde den Knopf "Thema gelöst" leider nicht.

MzKlMu

Hallo,
das Semikolon war ein Tippfehler, danke für den Hinweis. Habe es oben noch ausgebessert.
Gruß
Klaus