Im Formular über Kombinationsfeld Bericht auswähle

Hallo,

ich möchte aus einem Formular

  1. nur den aktuellen Datensatz in einen Bericht drucken (das klappt, s.u.)
  2. über ein Kombinationsfeld im Formular einen bestimmten Bericht auswählen (das klappt noch nicht).

Das Kombinationsfeld heißt t_vorlage. Hierüber kann ich Berichten auswählen, die sich in der gleichnamigen Tabelle befinden.

Hat jemand eine Idee, wie ich die Bedingung gestalten muss, damit lediglich der ausgewählte Bericht verwendet wird?

Viele Grüße, Stefan

***
Private Sub drucken_Click()
On Error GoTo Err_pbReport_Click
Dim stDocName As String
stDocName = „b_test“
DoCmd.OpenReport stDocName, acPreview, , „t_brief_id=“ & Me!t_brief_id
Exit_pbReport_Click:
Exit Sub
Err_pbReport_Click:
MsgBox Err.Description
Resume Exit_pbReport_Click
End Sub
***

Hi,

du wählst also in dem Kombifeld aus in welchem Bericht ein bestimmter Datensatz geöffnet werden soll?

Hast du schon versucht bei DoCmd.OpenReport den inhalt von t_vorlage als Berichtsnamen zu laden?

Also DoCmd.OpenReport(t_vorlage,…)

Funktioniert natürlich nur, wenn der Bericht genauso heißt wie der inhalt von t_vorlage bzw geht auch noch:

Berichte fangen grundsätzlich mit „Bericht_“ an und sollen aber nicht als „Bericht_A“, „Bericht_B“ und „Bericht_C“ im Kombifeld stehen. Dann ist der Inhalt vom Kombifeld meinetwegen „A“, „B“, „C“, …

und im Code steht DoCmd.OpenReport(„Bericht_“ & t_vorlage, …) falls das möglich ist. Hab ich leider noch nicht ausprobiert.

MfG
Philipp K.

Moin, Stefan,

Das Kombinationsfeld heißt t_vorlage. Hierüber kann ich
Berichten auswählen, die sich in der gleichnamigen Tabelle
befinden.

da muss ich mal einhaken: Berichte befinden sich nicht in Tabellen, sondern sind eigenständige Objekte, die eine Tabelle (oder eine View) als Datenquelle haben.

Hat jemand eine Idee, wie ich die Bedingung gestalten muss,
damit lediglich der ausgewählte Bericht verwendet wird?

Vorausgesetzt, t_vorlage zeigt tatsächlich die gewünschten Berichtsnamen an, dann nimm den Code wie bei drucken_Click() und schreib

 private sub t\_vorlage\_change()
 ...
 StDocName = t\_vorlage
 ...
 end sub 

Gruß Ralf

Hallo,

der Hinweis von Ralf,
StDocName = t_vorlage
einzufügen, funktoniert (fast).

Es gibt folgende Fehlermeldung, weil statt des Berichtsnamens die jeweilige ID benutzt wird:
Der Berichtsname ‚1‘, den Sie … eingegeben haben, ist falsch geschrieben oder verweist auf ein Bericht, der nicht existiert.

Ich weiß aber nicht, wie der Code geändert werden müsste.

Gruß, Stefan

Hallo,

Ich weiß aber nicht, wie der Code geändert werden müsste.

ich (wir) auch nicht, wenn Du nicht mal den gesamten Aufbau und Inhalt der Tabelle als auch der Kombi-Eigenschaften offenlegst…

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Hallo,

für die Wahl der Vorlage gibt es im Formular ein Kombifeld (Name: t_brief_vorlage).
Datensatzherkunft ist die Tabelle t_vorlage (Felder t_vorlage_id und t_vorlage_text).
Das Feld t_vorlage_text enthält den Namen des Berichtes.

Ebenfalls im Formular ist eine Schaltfläche „drucken“, welche den aktuellen Datensatz auf dem gewählten Bericht ausdrucken soll.

Code:
Private Sub drucken_Click()
On Error GoTo Err_drucken_Click
Dim stDocName As String
stDocName = t_brief_vorlage
DoCmd.OpenReport stDocName, acPreview, , „t_brief_id=“ & Me!t_brief_id
Exit_drucken_Click:
Exit Sub
Err_drucken_Click:
MsgBox Err.Description
Resume Exit_drucken_Click
End Sub

Gruß, Stefan

Hallo Stefan,

lese hier die FAQ:2710

Gruß
Wolfgang
(Netwolf)

Hallo Wolfgang,

vielen Dank (auch an die anderen), genau das war’s.

Der richtige Code lautet nun:

Private Sub drucken_Click()
On Error GoTo Err_drucken_Click
Dim stDocName As String
stDocName = t_brief_vorlage.Column(1)
DoCmd.OpenReport stDocName, acPreview, , „t_brief_id=“ & Me!t_brief_id
Exit_drucken_Click:
Exit Sub
Err_drucken_Click:
MsgBox Err.Description
Resume Exit_drucken_Click
End Sub

Gruß, Stefan