Neuigkeiten:

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

Mobiles Hauptmenü

Ein Bericht mit einer Abfrage unterschiedliche Kriterien mehrere PDFs

Begonnen von NadineG, März 11, 2018, 22:01:42

⏪ vorheriges - nächstes ⏩

NadineG

Hallo,
ich bin Anfänger in Sachen VBA. Auch nach Googlen hab ich noch keine Lösung für meine Frage. Ich habe eine Funktion, diese öffnet einen Bericht, speichert diesen als PDF mit einem Dateinamen welcher sich u.a. auch aus dem Inhalt des Berichtes zusammensetzt.

Mit nur einem Filter funktionert das ganze super Gut. Nun meine Frage: Wie bekomme ich es hin verschiedenen Filter anzuwenden und im Ergebnis auch mehrere PDF's zu erhalten.

Private Sub btnExport_Click()

On Error GoTo Fehler

'Speicherpfad
Dim sFolder_for_PDF As String
sFolder_for_PDF = "C:\....."

'Speichername
Dim sFilename As String
sFilename = Me!Jahr & "_" & Me!Mandant & "_" & Me!Inkasso & "_Inkasso.pdf"

'Zusammensetzung Speicherpfad und Speichername
Dim sfull_Filename As String
sfull_Filename = sFolder_for_PDF & "/" & sFilename

'Welcher Bericht wird geöffnet
Dim Berichtsname As String
Berichtsname = "Inkasso"

'Welcher Filter wird angewendet
Dim Filter As String
Filter = "[Mandant] = 'Mandant1' AND [Inkasso] = 'Inkasso1' AND [Jahr] =  " & Format(Date, "yyyy") & " "
Filter = "[Mandant] = 'Mandant1' AND [Inkasso] = 'Inkasso2' AND [Jahr] =  " & Format(Date, "yyyy") & " "
Filter = "[Mandant] = 'Mandant2' AND [Inkasso] = 'Inkasso1' AND [Jahr] =  " & Format(Date, "yyyy") & " "
Filter = "[Mandant] = 'Mandant2' AND [Inkasso] = 'Inkasso2' AND [Jahr] =  " & Format(Date, "yyyy") & " "

'Bericht wird im Hintergrund geöffnet - Bericht wird gespeichert - Bericht wird geschlossen
DoCmd.OpenReport Berichtsname, acViewPreview, , Filter, acHidden
DoCmd.OutputTo objectType:=acOutputReport, ObjectName:=Berichtsname, OutputFormat:=acFormatPDF, outputFile:=sfull_Filename
DoCmd.Close acReport, Berichtsname, acSaveNo

Exit Sub
Fehler:
    MsgBox "Der Bericht konnte nicht gespeichert werden!"
End Sub

Vielen Dank schonmal im Voraus.

MaggieMay

Hi,

du könntest eine Verarbeitungsschleife um den entscheidenden Befehlsblock bauen, in der alle gewünschten Filter abgearbeitet werden, oder du könntest auch die Filterkriterien ganz dynamisch-flexibel aus einem Formular holen.
Freundliche Grüße
MaggieMay

NadineG

Hallo,

danke für den Tipp. Wie müsste ich das mit der Schleife anstellen?

Danke.

Lachtaube

Du wendest in Deinem Code immer nur den letzten Filterausdruck an, weil der Wert der Variablen Filter überschrieben wird, bevor er in OpenReport zur Anwendung kommt.

In eier Schleife könnte das dann so aussehen:Private Sub btnExport_Click()

   Dim sFolder_for_PDF As String
   Dim sFilename       As String
   Dim sfull_Filename  As String
   Dim Filter          As String
   Dim i               As Long
   Dim j               As Long

   'Welcher Bericht wird geöffnet
   Const Berichtsname  As String = "Inkasso"
   
   On Error GoTo Fehler

   'Speicherpfad
   sFolder_for_PDF = "C:\foo\bar\"

   For i = 1 To 2
      For j = 1 To 2
         'Speichername
         sFilename = Me.Jahr & "_Mandant" & CStr(i) & "_Inkasso" & CStr(j) & ".pdf"
         'Zusammensetzung Speicherpfad und Speichername
         sfull_Filename = sFolder_for_PDF & sFilename
         'Welcher Filter wird angewendet
         Filter = "Mandant = 'Mandant'" & CStr(i) & " AND " & _
                  "Inkasso = 'Inkasso'" & CStr(j) & " AND " & _
                  "Jahr    =  Year(Date())"
         'Bericht wird im Hintergrund geöffnet - Bericht wird gespeichert - Bericht wird geschlossen
         With DoCmd
            .OpenReport Berichtsname, acViewPreview, , Filter, acHidden
            .OutputTo acReport, Berichtsname, acFormatPDF, sfull_Filename
            .Close acReport, Berichtsname, acSaveNo
         End With
      Next
   Next

   Exit Sub

Fehler:
   MsgBox "Der Bericht konnte nicht gespeichert werden!"
End Sub
Grüße von der (⌒▽⌒)

NadineG

Hallo,

viiielen Dank vorerst. Ich glaube ich muss mich erstmal mit Schleifen ein wenig genauer Beschäftigen.

Gruss Nadine

Beaker s.a.

Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)