Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Report Drucken VBA - Vorschauansicht

Begonnen von VIE81, Januar 03, 2020, 15:26:01

⏪ vorheriges - nächstes ⏩

VIE81

Hallo zusammen!

Ich habe zwar schon in mehreren - auch in diesem Forum - gesucht, finde aber leider keinen für mich primär verständlichen Lösungsansatz. Vielleicht könnt Ihr mir helfen...

Ich rufe über die Auswahl eines Jahres in einem Formular einen bestimmten, via Optionsgruppenwert vordefinierten Report auf. Das funktioniert auch ganz gut und ohne Fehler; der Aufruf geschieht wie folgt:

Private Sub RptJahr_Click()
If IsNull(Me!cboJahr) = True Then
MsgBox "Selektionswert aus Jahr darf nicht leer sein." & vbCrLf & "Bitte einen Wert aus dem Dropdownfeld auswählen.", vbOKOnly + vbCritical, "Fehlendes Selektionskriterium"
Me.cboJahr.SetFocus
Else
  Select Case Me.OptGrpJahr
  Case 1: DoCmd.OpenReport "rpt_Jahr_sortPruefdatum", acViewPreview
  Case 2: DoCmd.OpenReport "rpt_Jahr_sortZuname", acViewPreview
  Case 3: DoCmd.OpenReport "rpt_Jahr_sortSeriennr", acViewPreview
  End Select
  End If
End Sub


Mein Anliegen wäre nun, dass - die Reports werden wie o.a. im Vorschaumodus geöffnet - eine MsgBox (vbYesNo) angezeigt werden soll, bei der ein Hinweis angezeigt wird, dass der Report eben nur in der Vorschau angezeigt wird und dass der Benutzer die Möglichkeit hat, bei einem Klick auf die "Ja"-Schaltfläche der MsgBox das Druckmenü (Aufruf analog CTRL+P) geöffnet werden soll.

Klickt der Benutzer aber auf "Nein", dann soll der Report nur im Vorschaumodus geöffnet bleiben.

Könnt Ihr mir vielleicht helfen?
DANKE  :)

LG,
VIE81

DF6GL

Hallo,

rufe die Reports mit einem numerischen Wert  beim OpenArgs-Parameter der Openreport-Methode auf.

Im Activate-Ereignis des Reports prüfst Du den Openargs-Wert und rufst entspr. den Print-Dialög auf oder eben nicht.

  Case 1: DoCmd.OpenReport "rpt_Jahr_sortPruefdatum", acViewPreview,,,,1
.
.
.
.
Private Sub Report_Activate()
If Not IsNull(Me.OpenArgs) And Me.OpenArgs = 1 Then RunCommand acCmdPrint
End Sub


Der Print-Dialog wird allerdings vor dem Anzeigen des Berichtes selber angezeigt.

Beaker s.a.

Hallo,
@Franz
Glaube nicht, dass er das so gemeint hat.

@VIE81
Das Einfachste dürfte doch sein, vor dem Öffnen der Berichte eine Msgbox
anzuzeigen, mit entweder dem Hinweis den Bericht mit "Strg-P" ausdrucken
zu können, oder per Rückgabewerte von Buttons den View-Parameter zu
bestimmen.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

VIE81

Hallo!

DANKE für Euren Input. Die von 'Franz' angebotene Lösung hat nicht so funktioniert, wie ich es wollte. Es wurde nämlich - aus welchen Gründen auch immer - das Druckmenü für das Formular aufgerufen.

Ich habe es nun - nicht sonderlich elegant, aber funktionierend - so gelöst:

Private Sub RptJahr_Click()
If IsNull(Me!cboJahr) = True Then
MsgBox "Selektionswert aus Jahr darf nicht leer sein." & vbCrLf & "Bitte einen Wert aus dem Dropdownfeld auswählen.", vbOKOnly + vbCritical, "Fehlendes Selektionskriterium"
Me.cboJahr.SetFocus
Else
  Select Case Me.OptGrpJahr
  Case 1:
      If MsgBox("Der Bericht wird nur in der Vorschau geöffnet." & vbCrLf & "Soll das Druckmenü geöffnet werden ?", vbYesNo, "Berichtsvorschau") = vbYes Then
        DoCmd.OpenReport "rpt_Jahr_sortPruefdatum", acViewPreview
        RunCommand acCmdPrint
        Else
  DoCmd.OpenReport "rpt_Jahr_sortPruefdatum", acViewPreview
  End If
  Case 2:
       If MsgBox("Der Bericht wird nur in der Vorschau geöffnet." & vbCrLf & "Soll das Druckmenü geöffnet werden ?", vbYesNo, "Berichtsvorschau") = vbYes Then
        DoCmd.OpenReport "rpt_Jahr_sortZuname", acViewPreview
        RunCommand acCmdPrint
        Else
  DoCmd.OpenReport "rpt_Jahr_sortZuname", acViewPreview
  End If
  Case 3:
      If MsgBox("Der Bericht wird nur in der Vorschau geöffnet." & vbCrLf & "Soll das Druckmenü geöffnet werden ?", vbYesNo, "Berichtsvorschau") = vbYes Then
        DoCmd.OpenReport "rpt_Jahr_sortSeriennr", acViewPreview
        RunCommand acCmdPrint
        Else
  DoCmd.OpenReport "rpt_Jahr_sortSeriennr", acViewPreview
  End If
  End Select
  End If
End Sub


DANKE Euch nochmals  :)

LG,
VIE81

Beaker s.a.

Zitatnicht sonderlich elegant

Private Sub RptJahr_Click()
    Dim rptName As String
    If IsNull(Me!cboJahr) = True Then
        MsgBox "Selektionswert aus Jahr darf nicht leer sein." & vbCrLf & "Bitte einen Wert aus dem Dropdownfeld auswählen.", vbOKOnly + vbCritical, "Fehlendes Selektionskriterium"
        Me.cboJahr.SetFocus
    Else
        Select Case Me.OptGrpJahr
        Case 1:
            rptName = "rpt_Jahr_sortPruefdatum"
        Case 2:
           rptName = "rpt_Jahr_sortZuname"
        Case 3:
           rptName = "rpt_Jahr_sortSeriennr"
        End Select
        If MsgBox("Der Bericht wird nur in der Vorschau geöffnet." & vbCrLf & "Soll das Druckmenü geöffnet werden ?", vbYesNo, "Berichtsvorschau") = vbYes Then
            DoCmd.OpenReport rptName, acViewPreview
            RunCommand acCmdPrint
        Else
           DoCmd.OpenReport rptName, acViewPreview
        End If
    End If
End Sub
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)