Neuigkeiten:

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

Mobiles Hauptmenü

Über Formular den zugehörigen Bericht mit dem aktuellen Datensatz öffnen.

Begonnen von Benny80, April 18, 2019, 18:57:34

⏪ vorheriges - nächstes ⏩

Benny80

Hallo,

ich verzweifel langsam.

Ich habe ein Formular zu einer Abfrage und einen Bericht zu der selben Abfrage. Nun möchte ich jedoch über das Formular, den Bericht mit dem Datensatz (und nur mit dem Datensatz) öffnen, der gerade im Formular angezeigt wird. Dazu muss ich sagen, ich sehe innerhalb des Formulares nur einen Datensatz.

Ich habe es mit diesem VBA Code verwendet, denn ich im Internet gefunden habe versucht. Aber es funktioniert nicht...

Private Sub BtnBericht_Click()
    DoCmd.OpenReport DocName, acPreview, , _
                     "[ID-Feld-im-Bericht] = Formulare![Formular-Name]![ID-Feld]"
End Sub


Ich habe folgendes eingesetzt:
DocName = repAnwendung (Name des Berichtes)
ID-Feld-im-Bericht = ID (Spalte aus der Abfrage)
Formular-Name = frmAnwendung (Name des Formulares)
ID-Feld = ID (Spalte aus der Abfrage)

Was mache ich falsch?

MzKlMu

Hallo,
ZitatWas mache ich falsch?
viel, sehr viel in so wenig Code.  ;D
Du musst Dich auf das ID Feld der Tabelle beziehen.
Private Sub BtnBericht_Click()
    DoCmd.OpenReport "Berichtsname", acPreview, ,"IDFeldTabelle = " & Me.[IDFeldFormular]
End Sub

Außerdem muss das Feld des Formulars verkettet (&) werden.
Und im gleichen Formular reicht Me. als Bezug. Bei Dir fehlt auch der Berichtsname.
Der gezeigte Code setzt eine Zahl als ID voraus.
Gruß Klaus


Benny80

Na ja, eine Sache bräuchte ich noch...

Wie lautet der VBA Code vor dem Code, der besagt aktualisiere das Formular vorm öffnen des Berichtes.

Und die Befehle mit .Requery, bewirkt nur, das ich immer nur das erste Formular im Bericht sehe. Außerdem ist die Ansicht ohne Schaltflächen. Kann man das ändern?

MzKlMu

Hallo,
ein Requery nutzt in dem Falle nichts.
Der Datensatz im Formular ist begonnen und muss explizit gespeichert werden. Ein Datensatzwechsel oder das Schleißen und anschließende Öffnen würde das auch machen ist aber nicht notwendig.
Vor das DoCmd.OpenReport .....
muss noch eine Zeile zum Speichern:
DoCmd.RunCommand acCmdSaveRecord
Mit Me.Dirty = False
erreicht Du das Gleiche.
Gruß Klaus