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