September 19, 2021, 06:11:09

Neuigkeiten:

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


Ausgabe von einzelnen Berichten in PDF mit unterschiedlichen Dateinamen

Begonnen von neggz, Juli 15, 2021, 22:47:34

⏪ vorheriges - nächstes ⏩

neggz

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. :)

MzKlMu

Gruß
Klaus