ich habe folgende Problemstellung. Aus einem Access Bericht möchte ich zur Laufzeit nach Abschnittwechsel (hier z.B. Wechsel der Kundennummer) einen PDF - Druck für die Seiten anstoßen. Dieser PDF - Druck soll dann eine benannte Datei in ein entsprechendes Verzeichnis erstellen. Der Druck soll im Hintergrund laufen und möglichst keine weiteren Eingaben benötigen. D.h. beim Aufrufen des Berichts gibt es eine große Anzahl von sich erstellenden PDF - Dateien. Mit welchem Aufruf bzw. Funktion kann ich das machen? Ich habe unter auf der Multidoc - Webseite unter Anwendungsbeispiele geschaut, aber meines Erachtens nicht das richtige gefunden. Kannst du mir hier eine Info zu geben. Vielen Dank Freundliche Grüße aus dem Süden der Republik
Private Sub cmdPrint_Click() Dim rec As Recordset Dim i As Integer
'Setzen des Standarddruckers 'Alternative: Im Bericht einen festen PDF-Drucker hinterlegen For i = 0 To Application.Printers.count - 1 If Application.Printers(i).DeviceName = "FreePDF_Multidoc" Then Set Application.Printer = Application.Printers(i) Exit For End If Next
'Einlesen aller zu druckender Kunden. Set rec = CurrentDb.OpenRecordset("tblKundenstamm")
'Vollständiges Einlesen aller Recordset-Datensätze rec.MoveLast rec.MoveFirst
'Hier wird jeder Kunde einzeln gedruckt (Where-Klausel) Do While rec.EOF = False DoCmd.OpenReport "Demo_Druck", acViewNormal, acViewNormal, "KdNr=" & rec.Fields("KdNr") 'Sofortige Konvertierung Call Shell("C:...FreePDF_Multidoc.exe /f KdNr_" & rec.Fields("KdNr") & " /p C:...") Sleep 1000 rec.MoveNext Loop
End Sub
Erläuterung:
1. Im ersten Schritt wird ein globaler Drucker in der Datenbank festgelegt. Dies sollte ein sog. PDF-Drucker mit der Multidoc-Funktion sein.
2. In einem Recordset werden alle zu druckenden Kunden eingelesen. Das Recordset kann eine Tabelle oder Abfrage sein.
3. Für jeden Kunden wird jetzt einfach ein Bericht nur für diesen Kunden gedruckt. Damit stellt sich gar nicht mehr das Problem mit einem Wechsel der Kundennummer.
4. Nach dem Berichtsdruck wird jetzt einfach die Konvertierung angestoßen. Alternative wäre, eine Seriendruckdatei zu verwenden. Diese Variante würde ich sogar bevorzugen, da du erst einmal alle Ausdrucke ausführst und erst im Anschluss die Konvertierung startest.
Auf meiner Webseite findest Du den Aufbau der Seriendruckdatei.
Ein bisschen mit VB(A) musst Du dich aber auskennen.
Ich verwende Access 2010, bei älteren Access-Versionen kannst Du den Standarddrucker so nicht umstellen. In so einem Fall verwende am einfachsten die Variante 2 (also im Bericht).
Solltest Du noch Fragen haben, dann melde dich hier einfach.
Berichtsname, Pfade, Druckername, Tabellenname etc. bitte anpassen.
Gruß Ahmed
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de
funktioniert so. SUPER. Leider bekomme ich zwischen dem Druck immer die Fehlermeldung: "Keine oder falsch betitelte PS-Datei." Wie kann ich das verhindern? -die PDF - Dateien werden erzeugt aber die Fehlermeldung kommt immer. Ist hier das SLEEP zu kurz oder nicht richtig eingestellt? Kannst du mir da noch mal helfen. Vielen Dank Liebe Grüße FreePDF Multiuser
Einfach einmal mit der Sleep-Anweisung experimentieren oder wie gesagt, einfach erst einmal alle Drucke ausführen und anschließend einmal die Konvertierung mit einer Seriendruckdatei starten.
Wenn du die Konvertierung über eine Seriendruckdatei ausführen möchtest, dann wäre die Prinjobs.dll auch etwas für dich. Mit der Printjobs.dll kannst du den Programmcode solange anhalten, bis der Ausdruck vollständig abgearbeitet wurde.
Gruß Ahmed[/code]
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de
Danke für die Rückmeldung und weiterhin viel Erfolg.
Gruß Ahmed
FreePDF_Multidoc (PS2PDF mit vielen Optionen f. FreePDF) File2PDF (komplette Verzeichnisse auf einen Streich umwandeln) findest Du alles hier: http://amTools.de