Access-o-Mania

Access-Forum => Access Programmierung => Thema gestartet von: neggz am Juli 15, 2021, 22:47:34

Titel: Ausgabe von einzelnen Berichten in PDF mit unterschiedlichen Dateinamen
Beitrag von: neggz am Juli 15, 2021, 22:47:34
Hallo zusammen,

Ich bin recht neu in VBA und habe erst einige kleine Projekte umgesetzt. Mein Erfahrungsschatz ist leider begrenzt aber ich versuche mich Tag für Tag zu verbessern.

Ich möchte separate Berichte (Inhaltsverzeichnisse von Artikeln) per VBA ausgeben und als PDF mit unterschiedlichen Dateinamen speichern lassen. Ein Bericht (IHVZ) pro Artikel. Die Berichte basieren auf einer Abfrage. Die Artikel für die IHVZ erstellt werden sollen sind in einer Tabelle (Artikel_fuer_Loop) enthalten und sind als INNER JOINT in der Abfrage als Filter eingesetzt.

Mein Problem ist, dass ich dem Bericht nicht mitteilen kann, welchen Datensatz er nur anzeigen soll. Es kommt immer die Meldung:" Parameterwert eingeben artikelnummer_bericht ".artikelnummer_bericht ist ein Feld im Bericht, welches mit dem aktuellen Datensatz im recordset abgeglichen werden soll.

Ich bin nicht ganz sicher welche Informationen benötigt werden um mir zu helfen daher versuche ich es mal hiermit:

VBA:
Option Compare Database
Option Explicit

Private Sub Befehl51_Click()
Dim strSQL As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strDatei As String, strWhere As String

Set db = CurrentDb
strSQL = "SELECT * FROM Artikel_fuer_Loop"
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
Do Until rs.EOF
DoCmd.OpenReport "Inhaltsverzeichnis_V1_2020", acViewPreview, ,"artikelnummer_Bericht = '" & rs!artikelnummer_IHVZ & "'", acWindowHidden
strDatei = "M:\Austausch_der _bleibt\Inhaltsverzeichnis\Vollautomatisch\" & rs.Fields("artikelnummer_IHVZ").Value & "_" & Reports!Inhaltsverzeichnis_V1_2020!Text2 & ".pdf"
DoCmd.OutputTo acOutputReport, "Inhaltsverzeichnis_V1_2020", "PDF", strDatei, False
DoCmd.Close acReport, "Inhaltsverzeichnis_V1_2020"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub

SQL der Abfrage:
SELECT artikel.art_nr, Prüfung_IHVZ.Artikelname_Marketingtexte, xsstuecklistemehrstufig.xslm_childartlfdnr, Sum(xsstuecklistemehrstufig.xslm_childmenge) AS Summevonxslm_childmenge, artikel_1.art_nr, artikel_1.art_bez_001, artikel_1.art_bez_002, artikel_1.art_typ, Prüfung_IHVZ_1.Artikelname_Marketingtexte
FROM (((((artikel LEFT JOIN xsstuecklistemehrstufig ON artikel.art_lfdnr = xsstuecklistemehrstufig.xslm_fertigartlfdnr) LEFT JOIN artikel AS artikel_1 ON xsstuecklistemehrstufig.xslm_childartlfdnr = artikel_1.art_lfdnr) LEFT JOIN Prüfung_IHVZ ON artikel.art_lfdnr = Prüfung_IHVZ.art_lfdnr) LEFT JOIN Prüfung_IHVZ AS Prüfung_IHVZ_1 ON xsstuecklistemehrstufig.xslm_childartlfdnr = Prüfung_IHVZ_1.art_lfdnr) LEFT JOIN Prüfung_IHVZ AS Prüfung_IHVZ_2 ON xsstuecklistemehrstufig.xslm_parentartlfdnr = Prüfung_IHVZ_2.art_lfdnr) INNER JOIN Artikel_fuer_Loop ON artikel.art_nr = Artikel_fuer_Loop.[artikelnummer_IHVZ]
WHERE (((Prüfung_IHVZ_1.Prüfung)=True) AND ((Prüfung_IHVZ_1.IHVZ)=True) AND ((Prüfung_IHVZ_2.IHVZ)=False) AND ((xsstuecklistemehrstufig.xslm_childebene)>1)) OR (((Prüfung_IHVZ_1.Prüfung)=True) AND ((Prüfung_IHVZ_1.IHVZ)=True) AND ((xsstuecklistemehrstufig.xslm_childebene)=1))
GROUP BY artikel.art_nr, Prüfung_IHVZ.Artikelname_Marketingtexte, xsstuecklistemehrstufig.xslm_childartlfdnr, artikel_1.art_nr, artikel_1.art_bez_001, artikel_1.art_bez_002, artikel_1.art_typ, Prüfung_IHVZ_1.Artikelname_Marketingtexte;

Vielen Dank schon mal für alle die helfen möchten. :)
Titel: Re: Ausgabe von einzelnen Berichten in PDF mit unterschiedlichen Dateinamen
Beitrag von: MzKlMu am Juli 15, 2021, 23:36:59
Hallo,
siehe hierzu:
http://www.office-loesung.de/p/viewtopic.php?f=167&t=867919&sid=7e8e6aa28bcecfe8883e97b0bbb699b3

Crosspostings sind unerwünscht (siehe Regeln), zumal im anderen Forum schon kräftig geholfen wird.