Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 5/2007.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Versenden Sie Rechnungsberichte und sonstige Dokumente in Serie als PDF-Anhang per Mail.

Techniken

Formulare, Berichte, PDF

Voraussetzungen

Access 2000 und höher

Beispieldateien

Rechnungsversand.mdb

Shortlink

508

Berichte als PDF per Mail verschicken

André Minhorst, Duisburg

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 (s. Abb. 1).

pic001.tif

Abb. 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 (s. Abb. 2).

pic002.tif

Abb. 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 Abb. 3.

pic003.tif

Abb. 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 Abb. 4 anzeigt. Um das Unterformular übersichtlich zu halten, soll es nur die Felder BestellungID, Bestelldatum, Rechnungsdatum und das Feld Versenden der Tabelle tblRechnungVersenden enthalten.

pic004.tif

Abb. 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 (s. Abb. 5).

pic005.tif

Abb. 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 Abb. 6 aus.

pic006.tif

Abb. 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 (s. Abb. 7).

pic007.tif

Abb. 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:

Private Sub cmdEmpfaengerAuswaehlen_Click()

DoCmd.OpenForm "frmRechnungen", _
WindowMode:=acDialog

Me!txtAnzahlEmpfaenger = _
DCount("BestellungID", _
"qryRechnungenAuswahl", _
"Rechnungsdatum IS NULL AND " _
& "Versenden = True")

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.