ich habe eine Datenbank in Access und möchte einen ausgewählten Datensatz ausdrucken.
Ich wähle einen datensatz aus, klappt auch, dann benutze ich folgende Programmierung:
Private Sub Befehl269_Click()
On Error GoTo Err_Befehl237_Click
Me.AllowEdits = True
DoCmd.RunCommand acCmdSaveRecord
Me.AllowEdits = False
Dim stDocName As String
stDocName = „Baukosten-Zusammenstellung“
DoCmd.OpenReport stDocName, acViewPreview
DoEvents
On Error Resume Next
DoCmd.RunCommand acCmdPrint
Makroprogrammierung in MS Access gehört nicht zu meinem Tagesgeschäft.
Nach meiner Einschätzung müsstest du folgendes machen um zum Ziel zukommen:
Erstelle, falls noch nicht vorhanden eine Abfrage, die alle Datenfelder enthält, die im Report erscheinen sollen.
Dabei müssen dann die DatensatzNr oder auch andere Felder, die den Datensatz eindeutig beschreiben, als Eingabe vorbereitet werden bzw. du muss hier einen Testwert eintragen so dass der Report „Futter“ bekommt.
Mache falls nötig eine Kopie vom existierenden Report und ersetze die vorhandene Datenquelle durch die Abfrage.
Passe dein Makro so an dass es in der Abfrage die Kriterien setzt, das heißt die Datensatz-Nr. bzw. die Kriterien des zur Zeit aktiven Datensatzes einträgt und dann den Report startet/druckt.
Beim Makro kann ich nicht nicht weiterhelfen ohne mich erst in die Materie einarbeiten zu müssen.
einfach mal OpenReport anklicken und die F1-Taste drücken. Es wird erklärt, wie die Openreport-Anweisung aufgebaut ist. Unter Anderem gibt es die where-Klausel, mit der man eine Auswahl treffen kann.
Du könntest z.B. im OpenReport Ereignis Deines Berichts einen Filter auf den gewünschten Datensatz Deines Recordsource setzten.
Dazu definierst Du z.B. eine Globale Variable in einem Modul
Global rptfilterDSID as long
In dieser Variable speicherst Du mit dem OnClick Ereignis die gerade angezeigte Datensatz ID.
Als Globale Variable kannst Du auf Diese dann im OpenReport-Ereignis zugreifen.
Du verwendest
stDocName = „Baukosten-Zusammenstellung“
wobei ich annehme, daß es sich hier um einen Bericht handelt.
Lösung ist:
Als Datengrundlage des Berichts eine Abfrage zu verwenden, bei der die als Auswahlkriterium den aktuellen Datensatz des geöffneten Formulars verwendest.
Wenn es zum Beispiel ein eindeutiges Feld ID_BAUKOSTEN gibt, dann klickst Du in der Abfrage, die dem Bericht zugrunde liegt mit rechts in das Kriterienfeld und wählst „Aufbauen“. Dort wählst Du das Formular, daß gerade den aktuellen Datensatz hast aus und daraus das ID-Feld und dann wert und einfügen. Dort müsste dann so etwas wie Forms!!ID_Baukosten…value stehen.
Danach ollte der Bereicht nur den aktuellen Datensatz einthalten und kann gedruckt werden.