Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Aktuellen Formulardatensatz an Bericht übergeben

Begonnen von Georges, Juli 21, 2023, 11:54:02

⏪ vorheriges - nächstes ⏩

Georges

Hello
Ich kämpfe seit Tagen mit ein- und demselben Problem. Das Googeln und die Forumsuchen ergeben zwar massenhaft Lösungsvorschläge; keiner jedoch funktioniert bei mir.

Situation:

- Habe ein auf einer Abfrage (QryRechnungsstellung) basierendes Formular (FrmRechnungsstellung)

- Auf dem Formular möchte ich einen Button einfügen, der nur den aktuell angezeigten Datensatz an den Bericht RepRechnung übergibt und nicht gleich alle Datensätze der Abfrage.

Bin ein Access-Autodidakt im leicht fortgeschrittenen Newbi-Status  :)

Vielen Dank im Voraus und LG - Georges

MzKlMu

#1
Hallo,
Du kannst dem Druckbefehl den Primärschlüssel (PS) des Datensatzes übergeben.
Wie lautet der PS in der Abfrage/Tabelle und welcher Datentyp ist dieser?
Und der Name des Feldes das im Formular den PS anzeigt wäre auch von Interesse.
Gruß Klaus

Georges

Hello MzKlMu

Vielen Dank für dein promptes Feedback. Ich war länger in den Ferien, weshalb ich mich erst seit ein paar Tagen wieder mit meiner Acces-DB auseinandersetze.

Habe die DB umgebaut. Das obenstehende Problem besteht allerdings noch immer.

Aktuelle Situation/Anforderung:

Aus dem Formular "FrmVeranstaltung" soll mittels Button der Report "RepVeranstaltung" gedruckt werden - jedoch nur den aktuellen Datensatz der im Formular gerade angezeigt wird.

Dem Formular ist eine Tabelle hinterlegt (keine Abfrage), deren Primärschlüssel IDVeranstaltung heisst (auto Wert). Der Feldname ist ebenfalls IDVeranstaltung.

Das Makro habe ich wie folgt gestaltet:
______________________________________
Option Compare Database
DoCmd.OpenReport "RepVeranstaltung", , , "IDVeranstaltung =" & Me!IDVeranstaltung
End Sub
________________________________________


Hilfeeeee und schon mal danke 😊

LG Georges

MzKlMu

#3
Hallo,
Zitatkeiner jedoch funktioniert bei mir.
Das ist eine Aussage die absolut nichts nutzt.
Was genau funktioniert denn nicht ?
Gibt es Fehlermeldungen ?


Der gezeigte VBA Code ist unvollständig. Zeige den Code bitte vollständig und verwende die Codetags des Forums zur Darstellung von Code.


PS:
ZitatDas Makro habe ich wie folgt gestaltet:
Das ist kein Makro, das ist (unvollständiger) VBA Code. Mit Makros hat da nichts zu tun. Das es bei Access auch (nicht zu empfehlende) Makros gibt, muss man das unterscheiden.
Gruß Klaus

Georges

Puh... du stellst vielleicht Fragen.

Zitat...keiner jedoch funktioniert bei mir...
"Das ist eine Aussage die absolut nichts nutzt".

Ich meine damit, wenn ich den Button anklicke passiert nichts, aber gar nichts. Der aktuelle Code - siehe weiter unten - proviziert aber tatsächlich eine Fehlermeldung, welche lautet: "Sie haben als Einstellung den Ausdruck Beim Klicken eingegeben. Dieser Ausdruck hat einen Fehler verursacht: Ausserhalb einer Prozedur ungültig."



Code:
Option Compare Database

DoCmd.OpenReport "RepTeilnehmerliste", , , "IDVeranstaltung =" & Me!IDVeranstaltung

End Sub

Private Sub BtnVeranstaltungsreport_Click()

End Sub

MzKlMu

Hallo,
das ist ja auch völlig falsch.

So wird es funktionieren.


'nachfolgende Zeilen sind allgemeine Einstellung im VBA Modul
Option Compare Database 'legt den Vergleich von Zeichenketten fest
Option Explicit ' zwingt zur Deklaration von Variablen (Dim ...)

Das ist jetzt der eigentlich Code für den Button:
In deinem Code hat der Klick nichts bewirkt.
Private Sub BtnVeranstaltungsreport_Click()
    DoCmd.OpenReport "RepTeilnehmerliste", , , "IDVeranstaltung =" & Me!IDVeranstaltung
End Sub
Gruß Klaus

Georges

Private Sub BtnVeranstaltungsreport_Click()
    DoCmd.OpenReport "RepTeilnehmerliste", , , "IDVeranstaltung =" & Me!IDVeranstaltung
End Sub
Dein obenstehender Code hat nun tatsächlich direkt den Druck des Reports ausgelöst - super, das hab ich einfach nie hingekriegt.

Ich verstehe allerdings deine nachstehende Erläuterung nicht?
nachfolgende Zeilen sind allgemeine Einstellung im VBA Modul
Option Compare Database 'legt den Vergleich von Zeichenketten fest
Option Explicit ' zwingt zur Deklaration von Variablen (Dim ...)

Ein letztes Problem hab ich noch: Beim Klicken auf den Button werde ich per kleinem Fenster nach der ID (Primärschlüssel) des Datensatzes gefragt, dies obwohl ich die ID der Veranstaltung ja schon im Code haben!? Trotzdem, dass ich dann manuell die ID angebe, druckt er nicht nur den aktuellen/angegebenen Datensatz, sonder gleich alle Datensätze... welcher Hund ist hier noch begraben?

Grosses Dankeschön im Voraus!

PhilS

Zitat von: Georges am September 15, 2023, 11:03:03Beim Klicken auf den Button werde ich per kleinem Fenster nach der ID (Primärschlüssel) des Datensatzes gefragt, dies obwohl ich die ID der Veranstaltung ja schon im Code haben!?
Die Ursache dafür ist sehr wahrscheinlich, dass die relevante Spalte in der Datenherkunft des Berichts nicht IDVeranstaltung heißt, sondern anders. Finde den richtigen Namen heraus und pass das dann im Code entsprechend an.

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

MzKlMu

Hallo,
ZitatIch verstehe allerdings deine nachstehende Erläuterung nicht?
Die Erläuterungen sind allgemeine Hinweise zu VBA, mit Deinem Druckproblem hat da nichts zu tun.
Du solltet, wenn Du was nicht verstehst auch an die Hilfe denken, die man über die Taste F1 erreicht. Die Access Hilfe ist besser als ihr Ruf und meist sehr hilfreich mit Beispielen.

Stelle den Cursor im VBA Editor auf die Mitte des Wortes Compare und drücke die Taste F1.
Für Explicit sinngemäß dann auch.

Zu Deinem anderen Problem hat PhilS schon was geschrieben.
Gruß Klaus

Georges

Vielen Dank euch beiden

Hatte tatsächlich einen falschen ID-Namen bei der Datenherkunft des Berichts eingetragen - jetzt klappts perfekt. ;D

@ Klaus: danke für die Erläuterungen, aber ich bin definitiv noch nicht fortgeschritten und affin genug, um deine Hinweise voll und ganz zu verstehen. Die Accesshilfe habe ich bisher schlicht übersehen.

Hab noch was: wo steht im nachstehenden Code der Druckbefehl:
DoCmd.OpenReport()Der Code weist ja nur darauf hin, dass der Report geöffnet werden soll, aber nicht, dass er auch gedruckt werden soll?

LG und einen schönen Tag

MzKlMu

#10
Hallo,
das oben (in #9) gezeigte Codeschnippsel ist ja unvollständig. So wie gezeigt, ist das ja sinnlos und führt sofort zu einem Syntaxfehler. Man kann ja nicht einfach irgendwas hinschreiben, das muss schon den Regeln (Syntax) entsprechen. Und ein Klammerpaar kommt da nicht vor.

So ist der vollständige Code:
DoCmd.OpenReport "RepTeilnehmerliste", , , "IDVeranstaltung =" & Me!IDVeranstaltungDer Druckbefehl steckt hinter den Kommas. Die Kommas stehen für optionale Parameter. Wenn ein Parameter nicht angegeben wird, wird der Standardwert genommen und das ist Drucken der Seitenansicht.

Auch hier ist die Hilfe hilfreich. Stelle den Cursor auf OpenReport und drücke F1.
Gruß Klaus