Bericht zum aktuellen Datensatz drucken

Hallo,

ich habe ein Formular erstellt und zu den selben Daten einen Bericht. Nun möchte ich im Formular eine Schaltfläche erstellen, mit der ich den Bericht zum gerade im Formular geöffneten Datensatz drucken kann. Bis jetzt konnte ich nur eine Schaltfläche erstellen, die den ganzen Bericht druckt, aber das will ich ja gar nicht…
Ich nehme an, dass hier ein Makro erforderlich ist - nur kenne ich mich mit denen gar nicht aus. Bisher habe ich immer fertige im Internet gefunden.

Schon mal Danke für Eure Hilfe

Gruß
Fabian

Hi,

ich habe ein Formular erstellt und zu den selben Daten einen
Bericht. Nun möchte ich im Formular eine Schaltfläche
erstellen, mit der ich den Bericht zum gerade im Formular
geöffneten Datensatz drucken kann. Bis jetzt konnte ich nur
eine Schaltfläche erstellen, die den ganzen Bericht druckt,
aber das will ich ja gar nicht…

Deine Schaltfläche beinhaltet bestimmt den Aufruf „DoCmd.OpenReport (Berichtname)“. Wenn du die Hilfe dazu aufrufst, erkennst du sofort, daß die Methode OpenReport weitere optionale Argumente annimmt:
DoCmd.OpenReport reportname[, view][, filtername][, wherecondition]

Mit etwa folgendem Aufruf erreichst du das Gewünschte:

DoCmd.OpenReport „Mein_Bericht“, acViewNormal, "Satz_ID = " & Me!Satz_id

(vorausgesetzt, dein Datensatz einen Primärschlüssel beinhaltet, den ich hier Satz_Id genannt habe).

Gruß

J.

Hallo Sancho,

erstmal danke für Deine Hilfe! Leider stelle ich mich doch etwas zu blöd an. Die Schaltfläche ist soweit wie du beschrieben hast programmiert, aber ich bekomme immer noch alle Seiten des Berichts ausgedruckt. Ich habe allerdings erst nach deinem Hinweis auf den Primärschlüssel einen in der zugrundeliegenden Tabelle definiert. Der Inhalt dieses Feldes ist aber bei jedem Datensatz speziell (ist eine Bearbeitungsnummer), sollte also keine Verwechslung stattfinden.
Trotzdem: irgendwie will er noch nicht so, wie ich das will…

Danke für die Hilfe,
Fabian

Hi,

Trotzdem: irgendwie will er noch nicht so, wie ich das will…

Eigentlich sollte es. Damit wir dir hier weiterhelfen können, poste doch den Code der Ereignisprozedur hier hinein.

(die Ereignisprozedur siehst du, wenn du auf die Eigenschaften des Knopfes gehst, dort auf Ereignis und dann auf die drei Punkte „…“ gehst).

Noch ein Tip dazu: bitte den PRE-Tag benutzen, also vor deinem Text

 , nach deinem Text 

eingeben.

Gruß

J.

Hallo,

Eigentlich sollte es. Damit wir dir hier weiterhelfen können,
poste doch den Code der Ereignisprozedur hier hinein.

(die Ereignisprozedur siehst du, wenn du auf die Eigenschaften
des Knopfes gehst, dort auf Ereignis und dann auf die drei
Punkte „…“ gehst).

leider habe ich in der Ereignisprozedur rumgepfuscht, wobei diese gelöscht wurde. Komischerweise hatte ich die übrigens gar nicht selbst geschrieben, sondern nur gefunden (ich könnte das gar nicht schreiben). Ursprünglich hatte ich einen Makro zusammengestellt, der anscheinend automatisch in VisualBasic übersetzt wurde.
Wie kann ich denn dieses „Übersetzen“ wiederholen, bzw. wie müßte denn der vollständige Code lauten?

Vielen Dank im übrigen für die immer schnelle Antwort. Ich hoffe, dass ich als blutiger Laie (was Makros und VisualBasic angeht) Dir nicht zu sehr auf den Wecker gehe.

Gruß
Fabian

Hi,

leider habe ich in der Ereignisprozedur rumgepfuscht, wobei
diese gelöscht wurde.

Das ist nactürlich nicht gut: Anfänger und dann rumpfuschen :smile:

Am besten du erstellst einen Knopf und bemühst den Assistenten. Dann wählst du „Berichtsoperationen“, „Bericht in Vorschau öffnen“ und läßt das Ding einfach erstellen. Damit verfügst du über eine Ereignisprozedur, die dann etwa so aussieht:

Private Sub pbReport\_Click()
On Error GoTo Err\_pbReport\_Click

 Dim stDocName As String

 stDocName = "R\_MeinBericht"
 DoCmd.OpenReport stDocName, acPreview

Exit\_pbReport\_Click:
 Exit Sub

Err\_pbReport\_Click:
 MsgBox Err.Description
 Resume Exit\_pbReport\_Click

End Sub

Die Zeile

 DoCmd.OpenReport stDocName, acPreview

mußt du dann so verändern:

 DoCmd.OpenReport stDocName, acPreview **, , "Satz\_ID=" & Me!Satz\_ID**

Beachte die zwei Kommata!

Vielen Dank im übrigen für die immer schnelle Antwort. Ich
hoffe, dass ich als blutiger Laie (was Makros und VisualBasic
angeht) Dir nicht zu sehr auf den Wecker gehe.

Bitte bitte. Ich bin da eigennützig: je mehr du erfährst, desto weniger wirst du in Zukunft nerven :smile:

Gruß

J.

Hallo,

Vielen Dank im übrigen für die immer schnelle Antwort. Ich
hoffe, dass ich als blutiger Laie (was Makros und VisualBasic
angeht) Dir nicht zu sehr auf den Wecker gehe.

Bitte bitte. Ich bin da eigennützig: je mehr du erfährst,
desto weniger wirst du in Zukunft nerven :smile:

wie nett… Danke für die Tipps, werde es mal versuchen und dann posten, was für Folgen mein Versuch ohne eigenes Fachwissen hatte…

Gruß
Fabian

Hallo,

da bin ich wieder! Habe alles so gemacht wie Du gesagt hast, und die Fehlermeldung sieht zumindest vernünftiger aus, als vorher. Wenn ich auf den fertigen Knopf klicke, erscheint die Meldung:

Syntaxfehler (fehlender Operator) in Abfrageausdruck ‚(Angebotsnummer=345579)‘.

Der Wert der Angebotsnummer (so heißt das Feld, das den Primärschlüssel beinhaltet) entspricht korrekterweise dem Wert des Felds im gerade geöffneten Datensatz. Alles weitere verstehe ich - wie immer - nicht.

Danke schon jetzt für die nächste Antwort, Gruß
Fabian

Wenn „Angebotsnummer“ ein Zahlenfeld ist, muss es heissen (die 2 Kommata hintereinander sind kein Schreibfehler!):

Docmd.OpenReport "DeinBericht",acViewPreview,, \_
 "Angebotsnummer = " & Me!Angebotsnummer

Handelt es sich um ein Textfeld, dann:

Docmd.OpenReport "DeinBericht",acViewPreview,, \_
 "Angebotsnummer = '" & Me!Angebotsnummer & "'"

Gruß aus dem Norden
Reinhard Kraasch
(http://www.kraasch.de - Access Tipps & Tricks)

Hallo,

vielen Dank an Euch beide für die tolle Hilfe! Jetzt klappt alles so, wie ich es wollte und ich habe außerdem noch Grundlagen bei der Makro-Programmierung verstanden!
Das Problem hatte ich seit mittlerweile mehreren Monaten, mit Euch habe ich es in zwei Tagen gelöst, danke.

Gruß
Fabian