Neuigkeiten:

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

Mobiles Hauptmenü

Druck von mehreren Berichten gleichzeitig

Begonnen von AMB, Februar 20, 2014, 16:21:07

⏪ vorheriges - nächstes ⏩

AMB

Hallo,

ich muss am Anfang der Woche, für die vergangene Woche Tagesauswertungen drucken.
Hierfür steht ein Datumsfeld im Formular zur Verfügung und ein Druckbutton für den Bericht. Bei dem Bericht handelt es sich um einen ungebundenen Bericht. Die Daten werden über VBA (DCount, etc.) eingelesen.
Zur Zeit ist es so, dass ich den Tag auswählen muss, Bericht ausdrucken, nächsten Tag auswählen, Bericht ausdrucken ...

Ich würde jedoch gerne, den Montag der entsprechenden Woche auswählen und beim drücken des Druckbuttons sollen gleich alle Berichte der Woche ausgedruckt werden.

Bitte um Hilfe! Wie muss der entsprechende Code dafür aussehen?

Jonny

Hallo
leg doch den Druckbefehl in eine Schleife.
Dabei erhöhst du das Datum immer um 1 (Datumfeld + 1).

Gruß
Johann

AMB

Hallo
das habe ich versucht. Jedoch bin ich darin nicht so bewandert.
Hilfe beim Aufbau dieser Schleife wäre schön!

Jonny

Hallo
nehmen wir mal an dein Feld im Formular hat den Namen ADatum
Dim I as integer
for I = 1 to 5         ' 5 für fünf Tage, bei 7 halt für 7 Tage usw.
     docmd.openreport("Dein Bericht")  ' so wie du den Berichts jetzt schon startest
     me!adatum = me!adatum + 1
next i

AMB

Danke!! Werde es morgen gleich ausprobieren!

AMB

Guten Morgen,
habe das nun getestet, funktioniert natürlich genau wie ich es mir vorgestellt habe.

Aber beim Essen kommt bekanntlicherweise der Appetit.
Eigentlich ist Ausdrucken unnötig, auf dem Server als PDF speichern wäre viel besser. Ich habe daher den Code folgendermaßen angepasst:
'Bericht drucken'
Dim I As Integer
For I = 1 To 5         ' 5 für fünf Tage, bei 7 halt für 7 Tage usw.
     DoCmd.OutputTo acOutputReport, "rptTest", acFormatPDF, "C:\Test\KW 08.pdf"
     Me!txtDatumBericht = Me!txtDatumBericht + 1
Next I

1. Ist es möglich aus den 5 Berichten ein "Bericht" zu erstellen?
   Jetzt ist es so, dass nach jeder Schleife die PDF überschrieben wird und somit nur der letzte Tag vorhanden ist.

2. Wie kann der Dateiname automatisch aufgrund meiner Datumsauswahl generiert werden?
   (Beispiel: Datum=17.02.2014 => Dateiname=KW 08)

3. Wenn Punkt 1 nicht möglich sein sollte, wie kann ich jede einzelne Schleife als PDF speichern?
   


Jonny

Hallo,
du kannst den Dateinamen auch variabel machen
Dim DatName as String
Datname = "C:\Test\Datum " & me!txtzDatumBericht & ".pdf" ' das Datum als Dateiname genommen

DoCmd.OutputTo acOutputReport,Datname, acFormatPDF, "C:\Test\KW 08.pdf"

Hondo

Hallo,
erstell alle Berichte als PDF einzeln und merge sie dann anschließend. Danach die Einzelberichte mit Kill löschen.
Ein gutes Tool zum Mergen ist hier zu finden: http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/

Aufruf aus Access wäre z.b. dieser:
Dim CurPath As String
CurPath = CurrentProject.Path
Shell("c:\Programme\pdftk.exe " & CurPath & "\reports\report1.pdf " & CurPath & "\reports\report2.pdf " & CurPath & "\reports\report3.pdf cat output " & CurPath & "\reports\NewReport.pdf")
if dir(CurPath & "\reports\NewReport.pdf") <> "" then
    kill CurPath & "\reports\report1.pdf"
    kill CurPath & "\reports\report2.pdf"
    kill CurPath & "\reports\report3.pdf"
End if


Fehlerbehandlung nicht vergessen.
Gruß Andreas

Hondo

Hallo,
du musst die Server-Variante aber verwenden da du per Komandozeile zugreifst.
Kopiere die pdftk.exe in das Verzeichnis wo die Access-Anwendung liegt.

edit:
hab jetzt einiges getestet, auch mit bat-Datei erstellen etc, sobald ich die Shell aus Access starte wird keine PDF erstellt, auch nicht wenn ich die Batch-Datei starte per Shell. Führe ich die Batch händisch aus ist alles ok.
Ich fürchte das Problem liegt an irgendwelchen Sicherheitseinstellungen o.ä.

Andreas

AMB

Wie bekomme ich denn die Berichte einzeln als PDF erstellt?

Hondo

Installier dir einen PDF Drucker und drucke auf diesem den Bericht aus.
Z.B. PDFCreator. Alternative wäre die Lösung von Stephen Lebans: http://www.lebans.com/reporttopdf.htm

Andreas