Berichte vom Formular aufrufen

Hallo liebe Experten und Wissenden,

habe eine Frage (oh, ein Wunder :wink: ) ich muss aus einem Formular relativ viele Berichte ausführen. Gibt es eine Möglichkeit es eleganter zu gestallten, damit nicht 20 Buttons auf dem Formular zu sehen sind? z.B. über ein Listenfeld mit Doppelklick oder mit einer Drop-Down Liste mit einem Button (quasi markieren und Button drücken)

Vielen lieben Dank!!!

Hallo,

es funktioniert folgendermaßen:

Im Formular ein Kombinationsfeld oder ein Listenfeld einfügen und dies mit folgenden Eigenschaften belegen:

Name: BerichtName
Herkunftstyp: Wertliste
Datensatzherkunft: „Bericht1“;„Bericht2“;„Bericht3“
(also Namen der Berichte in Anführungszeichen mit Semikolon getrennt
Gebundene Spalte: 1
Nur Listeneinträge: Ja
Standartwert: Null

anschließend eine Schaltfläche mit folgenden Eigenschaften einfügen:

Name: AufrufBericht
Caption: Bericht öffnen
Beim Klicken: [Ereignisprozedur]

als Ereignisprozedur folgenden VBA-Code einfügen:

Private Sub AufrufBericht\_Click()
If IsNull(Me!BerichtName) Then
 MsgBox "Bitte erst Bericht auswählen!"
 Exit Sub
End If
On Error Resume Next
DoCmd.OpenReport Me!BerichtName, acViewPreview
If Err.Number = 2103 Then MsgBox "Bericht unbekannt"
on error goto 0
End Sub

Alternativen:
ohne Schaltfläche auf Änderung des Kombifeldes (BerichtName_Change)
oder auf Doppelklick im Listenfeld (BerichtName_DblClick) reagieren
dazu den o.g. Code in die entsprechende Ereignisprozedur einfügen

Ausbaumöglichkeiten:
das Kombi-/Listenfeld holt sich die Berichtnamen selbst (sofern alle eingerichteten Berichte aufruffähig sein sollen),
die Berichtnamen werden in einer Tabelle verwaltet und werden von dort in das Kombi-/Listenfeld eingelesen,

Hoffe Du siehts durch und es klappt alles.

Gruß tester

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi tester,

vielen lieben dank ich hätte nicht so schnell mit einer Antwort gerecnet. Werde es morgen ausprobieren und mich dann melden, sieht aber schon plausibel aus.

Noch ein Mal danke, dass du dir Zeit genommen hast!

Gruß aus Köln, Igor.

Hi tester,

Ich habe doch noch eine Nachfrage: Gibt es eine Möglichkeit die Berichtsnamen die in der Liste angezeigt werden sollten irgendwie anders darstellen zu lassen. Ich habe folgendes Problem, da ich sehr viele Berichte brauche musste ich mir eine Systematik überlegen wie ich all diese Berichte auseinanderhalte --> kann ich also quasi einen Pseudonamen auf irgend eine Art und Weise darstellen lassen, wobei hinter diesem Name ein bestimmter Bericht steht?

Danke dir schon Mal im Voraus.

Gruß aus Köln, Igor.

Holla.

Du könntest z.B. jeden Deiner Berichte mit einer Beschreibung versehen. Der Reportname ist „rep_UmsatzPLZ“ und in der Beschreibung steht „vierteljährliche Umsatzliste nach Postleitzahl“. Wenn Du dann die AllReports-Auflistung durchläufst, kannst Du Dir für jeden Report die „Description“ geben lassen und mit dieser Dein Kombifeld füllen; siehe :

Sub AllReports()
 Dim obj As AccessObject, dbs As Object
 Set dbs = Application.CurrentProject
 For Each obj In dbs.AllReports
 Debug.Print obj.Description
 Next obj
End Sub

Wobei Du noch die Print-Anweisung so modifizieren musst, dass die Quelle Deines Kombifeldes daraus bedient wird.

Gruß Eillicht zu Vensre

Hi,

das ging aber schnell. Vielen lieben Dank. Werde es so schnell wie möglich ausprobieren und hoffe dass ich da als Leihe durchblicke :wink:

Beste Grüße aus Köln, Igor.