Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

generieren einzelne Seiten aus Access-Bericht





Frage

Ich habe folgendes Problem: zur Kontrolle meiner Mitglieder-Daten möchte ich jedem Mitglied jährlich einen Auszug aus der Datenbank schicken. Der Access-Bericht hat 12'000 Seiten (je Mitglied eine Seite). Ich möchte nun automatisiert 12'000 Einzelseiten als PDF-Datei drucken, die Dateien auf eine Festplatte speichern (Name soll sich aus Mitglieder-Nr und Datum zusammensetzen) und gleichzeitig eine Kontrolldatei im Textformat (mit Delimiter) mit Mitglied-Name, Eintrittsdatum, E-Mail-Adresse und dem Dateinamen erzeugen (1 Zeile je Datei). Wer kann mir weiterhelfen?

Antwort 1 von SJ

PDF kann ich nicht erstellen, aber reicht auch ein Snapshot. Kannst in die Variable Name das jeweilige Mitglied Eintragen + den Kompletten Path!!
Bei "Bericht1" muss dein Bericht rein.
Und vor jedem Aufruf müsstest du den Filter von deinem Bericht auf das nächste Mitglied setzen.

name = "C:\Mitglied1.snp"
DoCmd.OutputTo acOutputReport, "Bericht1", "Snapshot Format", name


Mit der Text Datei wirst du mit Print # erstellen müssen. Habe es aber noch nie Probiert.

MFG
SJ


Antwort 2 von SJ

Textdatei kannste so erstellen:

Open "C:\Kontrolldatei.txt" For Output As #1
Print #1, "Mitglied-Name"; ";"; "Eintrittsdatum"; ";"; "E - Mail - Adresse"; ";"; "Dateinamen"
Close #1



Deine Felder z.B. Mietglied-Name kannst als Variable übergeben.Trennzeichen ist hier jetzt ;

MFG
SJ


Antwort 3 von Teddy

Zum Thema PDF erstellen hab ich mir mal folgendes notiert :
Funktion in beliebiges Modul stellen:

Public Function druckPDF(pnr, defPr)
Dim dru As Printer
Set Application.Printer = Application.Printers(pnr)
Set dru = Application.Printer
Debug.Print dru.DeviceName
DoCmd.PrintOut (acPrintAll)
Set Application.Printer = Application.Printers(defPr)
Set dru = Application.Printer
Debug.Print dru.DeviceName
End Function


Aufruf-Parameter:

pnr= Nr. des PDF-Writers

sefPr= Nr. des Standard-Druckers

Die Statements "Debug.Print" dienen nur zum ermitteln der richtigen Drucker und können nach Test entfernt werden. Du mußt ev. testen, welche Druckernummern den gewünschten Druckern Deiner Druckerliste entsprechen.
Wenn Du variable Zuordnung benötigst, mußt Du zusätzlich in einer Schleife die Drucker durchsuchen, bis der richtige Drucker gefunden wurde:

Dim i
i = 0
Do While True
Set dru = Application.Printers(i)
If dru.DeviceName = "Druckername" Then Exit Do
i = i + 1
Loop
'i enthält nun die Druckernummer


Für "Druckername" den gesuchten Drucker einsetzen. Nicht gefunden führt zu Fehler!

Nicht auf meinem Mist gewachsen und nicht getestet !!!
Gruß
Teddy