Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
Sie haben eine Anwendung, die Berichte mit Rechnungen oder ähnlichen Daten enthält, und möchten diese möglichst in einem Rutsch als PDF-Dokument in einer E-Mail verschicken Kein Problem: Die Werkzeuge dafür hat Access im Unternehmen in der Vergangenheit schon geliefert. Jetzt geht es an das Zusammenbauen der Einzelteile zur PDF-erzeugenden Bericht-Per-Mail-Verschickungsmaschine.
Jeder, der seine Kunden und Bestellungen in einer Access-Datenbank verwaltet, hegt früher oder später den Wunsch, Rechnungen und sonstigen kundenbezogenen Schriftverkehr automatisiert erledigen zu lassen. Klassischerweise hält dafür ein Bericht her, der ausgedruckt, eingetütet und mit der Schneckenpost verschickt wird. Manch einer schickt die Daten auch zuvor noch nach Word, um diese von der Sachbearbeiterin nachbearbeiten zu lassen.
In letzter Zeit löst aber die E-Mail den Versand per Post ab: Dabei wird die Rechnung im PDF-Format gespeichert, an die E-Mail angehängt und mit dieser verschickt. Damit entfallen sowohl einige Kosten fürs Material als auch der Zeitaufwand für das Ausdrucken und Eintüten, geschweige denn die Verzögerung durch die postalische Zustellung.
Damit Sie wirklich von dieser gewonnenen Zeit profitieren können, müssen die notwendigen Vorgänge natürlich vollautomatisch ablaufen. Das ist kein Problem: Beiträge aus vergangenen Ausgaben von Access im Unternehmen liefern die Basis für das Programmieren einer Anwendung, die Ihre Anschreiben vollautomatisch an die Kunden versendet.
Das Erstellen von PDF-Dokumenten aus Berichten beschreibt der Beitrag Vom Bericht zum PDF-Dokument (Shortlink 430). Dort kommt eine von Stephen Lebans bereitgestellte DLL, die nicht registriert werden muss, zum Einsatz.
Das Versenden von E-Mails erläutert der Beitrag Mail versenden mit SMTP und VBA (Shortlink 390). Auch dieser Beitrag stellt eine DLL vor, die Sie kostenlos einsetzen können.
Die Techniken sind also vorhanden, fehlt nur noch das Rahmenwerk: Eine Anwendung, die massenhaft Dokumente für unterschiedliche Empfänger liefert, ist beispielsweise die Südsturm-Datenbank (eine geänderte Fassung der Nordwind-Datenbank, siehe Shortlink 411). Sie enthält neben den Tabellen einen Rechnungsbericht, der dem aus der Original-Nordwind-Datenbank entspricht, aber den Tabellen der Südwind-Datenbank angepasst ist (siehe Bild 1).
Bild 1: Der Rechnungen-Bericht aus der Nordwind-Datenbank hält als Beispiel für den Rechnungsversand im PDF-Format per E-Mail her.
Voraussetzung: E-Mail-Adresse
Damit Sie überhaupt serienweise Rechnungen per E-Mail versenden können, brauchen Sie die passenden E-Mail-Adressen. Diese sollten zusammen mit den übrigen Kundendaten in einem separaten Feld der Kundentabelle untergebracht sein. Im Beispiel enthält so die Tabelle tblKunden ein weiteres Feld namens EMail.
Zusätzliche Felder
Wer Rechnungen und sonstige Korrespondenz per E-Mail verschickt, sollte dies genau so festhalten wie den Versand von Waren oder Briefen. Daher enthält die Tabelle tblBestellungen ein zusätzliches Feld mit dem Namen Rechnungsdatum (siehe Bild 2).
Bild 2: Die Tabelle tblBestellungen enthält ein zusätzliches Feld, das den Zeitpunkt des Rechnungsversands speichert.
Außerdem fügen Sie der Beispieldatenbank eine weitere Tabelle namens tblRechnungVersenden hinzu. Die Tabelle enthält lediglich zwei Felder: Das Primärschlüsselfeld dient der Verknüpfung mit einem Datensatz der Tabelle tblBestellungen, das zweite ist ein Ja/Nein-Feld, das angibt, ob die Rechnung zur aktuellen Bestellung versendet werden soll. Da diese Angabe nur temporär ist, soll sie in einer separaten Tabelle gespeichert werden und die Anzahl der Felder der Tabelle tblBestellungen nicht unnötig erhöhen. Die Verknüpfung der beiden Tabellen entnehmen Sie Bild 3.
Bild 3: Die zusätzliche Tabelle tblRechnungVersenden liefert ein Feld zum Markieren der zu versendenden Rechnungen.
Rechnungen für den Versand auswählen
Bevor es ans Eingemachte geht, stellen Sie zunächst noch ein Formular zusammen, mit dem der Anwender auswählen kann, welche Rechnungen er versenden möchte. Dazu verwenden Sie ein Unterformular, das die Rechnungen aus der Abfrage aus Bild 4 anzeigt. Um das Unterformular übersichtlich zu halten, soll es nur die Felder BestellungID, Bestelldatum, Rechnungsdatum und das Feld Versenden der Tabelle tblRechnungVersenden enthalten.
Bild 4: Diese Abfrage liefert die Daten für die Auswahl der zu versendenden Rechnungen im Unterformular sfmRechnungen.
Das Unterformular selbst betten Sie in ein Hauptformular ein, das die Möglichkeit bietet, nach noch nicht verschickten Rechnungen zu fahnden oder die aktuell zu verschickenden Rechnungen zu markieren (siehe Bild 5).
Bild 5: Die Auswahl der zu versendenden Rechnungen erfolgt im Formular
frmRechnungen per Klick auf das entsprechende Kontrollkästchen.
Technische Voraussetzungen
Wie bereits erwähnt, brauchen Sie einige DLLs für den Betrieb dieser Lösung.
Die vbSendMail.dll [1] müssen Sie registrieren. Dies erledigen Sie ganz einfach mit folgender Anweisung, abgesetzt im Ausführen-Dialog oder in der Eingabeaufforderung:
RegSvr32.exe <Pfad>\vbSendMail.dll
Nutzer von Windows Vista müssen über die entsprechenden Berechtigungen verfügen und installieren DLLs mit demselben Befehl, allerdings in der Administrator-Variante der Eingabeaufforderung, die man mit dem Kontextmenüeintrag Als Administrator ausführen des Menüpunkts Alle Programme/Zubehör/Eingabeaufforderung öffnet.
Für den Einsatz der Bibliothek benötigen Sie einen Verweis auf SMTP Send Mail for VB6 in der Datenbank.
Die beiden für das Erzeugen des PDFs aus einem Bericht erforderlichen DLLs [2] brauchen Sie nicht zu installieren, sondern nur im Verzeichnis der Datenbankanwendung oder im Windows-Systemverzeichnis zu speichern.
Dafür müssen Sie aber die beiden Module modReportToPDF und clsCommonDialog aus der Beispieldatenbank A2000SnapshotToPDFver751.mdb [2] importieren – darin ist unter anderem die Funktion zum Erzeugen eines PDF-Dokuments aus einem Bericht enthalten.
E-Mail-Daten
Für das Versenden von E-Mails mit der vbSendMail-Bibliothek brauchen Sie ein paar Informationen mehr, als wenn Sie dies mit Outlook erledigen. Dafür sind Sie aber auch vor lästigen Sicherheitsrückfragen gefeit.
Zu diesen Informationen gehören unter anderem die Daten des Servers, der die E-Mails verschicken soll, die Absenderinformationen, der Text des Betreffs und der eigentliche Inhalt der E-Mail.
Da sich diese Daten möglicherweise mit der Zeit ändern oder Sie verschiedene E-Mail-Vorlagen erstellen möchten, speichern Sie je einen Satz dieser Daten in einer Tabelle namens tblEMails, die mit einer weiteren Tabelle namens tblAuthentifizierungsdaten verknüpft ist. Letztere enthält die unterschiedlichen Authentifizierungsmethoden.
Diese Tabelle sieht im Beziehungen-Fenster so wie in Bild 6 aus.
Bild 6: Diese beiden Tabellen speichern die Vorlagen für verschiedene E-Mails. Auf diese Weise ist das Wechseln etwa des Servers oder einer Absenderadresse kein Problem.
Die Steuerungszentrale
Das Formular frmRechnungsversand dient nicht nur der Anzeige der in den beiden Tabellen tblEMails und tblAuthentifizierungsarten gespeicherten Daten, sondern auch als Steuerungszentrale für den E-Mail-Versand (siehe Bild 7).
Bild 7:
Das Formular frmRechnungsversand steuert den Versand der Rechnungen und bietet die Möglichkeit, das Formular frmRechnungen zum Auswählen der zu versendenden Rechnungen anzuzeigen.
Interessant sind die Funktionen dieses Formulars: Während die Felder im oberen Bereich entsprechend den vorliegenden Serverdaten gefüllt werden müssen, können Sie bei den beiden unteren Feldern Betreff und Inhalt mit Platzhaltern arbeiten. Die enthaltene Technik lässt sich am besten im Zusammenhang erläutern:
Zunächst trägt der Benutzer die für den Versand wichtigen Informationen in die dafür vorgesehenen Felder ein.
Dann erfolgt die Auswahl der Bestellungen, für die eine Rechnung verschickt werden soll. Diese Auswahl erfolgt im Formular frmRechnungen, das der Benutzer durch einen Mausklick auf die Schaltfläche cmdEmpfaengerAuswaehlen öffnet. Dies löst die folgende Ereignisprozedur aus:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo