Das in Abbildung A gezeigte Formular verwendet eine Listenbox-Steuerung zur Anzeige aller Reports in der Nordwind-Musterdatenbank, die in Access integriert ist. Zum Versand eines Reports per E-Mail, braucht man nur einen auszuwählen und auf die Schaltfläche „Mail Report“ zu klicken.
Abbildung A: Dieses Musterformular versendet ein Access-Objekt mit Hilfe des im System als Standard definierten E-Mail-Clients. (Foto: ZDNet)
Zur Erstellung des Formulars öffnet man ein leeres Formular und ergänzt es um eine Listenbox und eine Befehlsschaltfläche. Tabelle C führt die Eigenschaften für das Formular und beide Steuerungen an. Speichern Sie das Formular unter dem Namen frmSendMail. Nachdem die beiden Steuerungen hinzugefügt wurden, klicken Sie auf die Schaltfläche Code in der Werkzeugleiste Form Design, um das Modul des Formulars zu öffnen und die beiden in Listing A und Listing B gezeigten Ereignisprozeduren einzugeben. Das Ereignis ‚load‘ des Formulars sorgt für die Einträge in der Listenbox, während die Befehlsschaltfläche die Methode SendObject aufruft.
Tabelle C: Forumular-Eigenschaften
Steuerelement | Eigenschaft | Einstellung |
Formular | Bildlaufleisten | Neither |
  | Record-Selektor | No |
  | Navigationsschaltflächen | No |
  | Trennlinien | No |
Listenbox | Name | lstObject |
Befehlsschaltfläche | Name | cmdSendMail |
  | Caption | Mail Report |
Die Verwendung des Formulars
Nun sind wir soweit, dass wir tatsächlich Mails versenden können. Dafür wählen wir aus der Liste einen Report aus, beispielsweise Catalog, und klicken auf die Schaltfläche Mail Report. Daraufhin öffnet sich das in Abbildung B dargestellte Fenster „Neue Nachricht“. Man beachte, dass der Report als Dateianhang aufgeführt ist. Das Fenster kann auch anders aussehen. Man sollte dabei bedenken, dass Access den im System als Standard definierten E-Mail-Client benutzt.
Abbildung B: Die Methode SendObject öffnet eine neue Nachricht im E-Mail-Programm. (Foto: ZDNet)
Es fällt auf, dass viele Felder noch leer sind. Vor dem Versand der Mail müssen die Anwender noch eine Menge Informationen eingeben: den/die Empfänger, einen eventuellen Betreff, sowie den Text der Nachricht. Soll den Anwendern diese Information oder ein Teil davon bereits vorgegeben werden, lassen sich die entsprechenden Werte in der SendObject-Methode festlegen.
Geben Sie zum Testen des Formulars Ihre eigene E-Mail-Adresse ein und versenden Sie es. Sollten Sie im Moment gerade nicht online sein, ist dies auch kein Problem. Ihr E-Mail-Client speichert die Nachricht und ihre Dateianhänge, bis Sie sich das nächste Mal wieder mit dem Netz verbinden.
Erweiterungen
In den Beispielen wurden absichtlich so wenig Informationen wie möglich spezifiziert, damit man sich auf die Methode SendObjects konzentrieren kann und nicht auf ein schickes Formular, das dem Anwender die ganze Arbeit abnimmt. Man sollte leicht in der Lage sein, weitere Informationen von seinen Anwendern einzuholen und diese an die SendObject-Methode weiterzugeben, wodurch die Informationsmenge und der Zugriff des Anwenders auf die E-Mail-Nachricht selbst verringert werden. Alternativ kann man die Information auch selbst als direkten Wert in das SendObject-Statement eingeben.
Zudem beinhaltet das Beispiel keine Fehlerverarbeitung. Die Aufzeichnung von Fehlern ist jedoch sicherlich wünschenswert. Hier nur einige wenige, auf die man vorbereitet sein sollte:
Man sollte versuchen, zu vermeiden, dass die Anwender E-Mail-Adressen manuell eingeben. Dies ist sehr fehleranfällig, denn jeder Eintrag muss einem exakten Format entsprechen und selbstverständlich muss es sich um eine gültige E-Mail-Adresse handeln. Dafür muss man Code integrieren, der diese Adressen überprüft. Anderenfalls muss man dafür sorgen, dass die Anwender die Empfänger nur aus dem Adressbuch des E-Mail-Programms auswählen können.
Snapshot-Dateien per E-Mail versenden
Wenn man damit vertraut ist, Access-Reports per E-Mail zu versenden, kennt man vielleicht auch schon den in Access 2000 und die neueren Versionen integrierten Snapshot Viewer. (Nutzer von Access 97 müssen das Programm separat downloaden und installieren.) Dieses Programm speichert Access-Reports als Snapshot-Datei (.snp), die praktisch ganz genauso aussieht wie der Original-Report.
Ist der Snapshot Viewer installiert, kann man die Konstante des Snapshot-Formats (acFormatSNP) im Argument outputformat von SendObject angeben. Das vorherige Beispiel würde also das folgende Statement verwenden:
DoCmd.SendObject acSendReport, strReport, _ acFormatSNP, , , , , , True
Man muss nur bedenken, dass der Report, auf den man sich im Argument objectname bezieht, eine gültige Snapshot-Datei (mit der Dateierweiterung .snp) sein muss. Liegt der Report im Access-Format, nicht aber im Snapshot-Format vor, kann man sich ein paar Schritte ersparen, indem man den Access-Report exportiert. Dazu verwendet man das Format SnapshotFormat (*.snp) in dieser Form:
DoCmd.SendObject acSendReport, strReport, _ „SnapshotFormat(*.snp)“, , , , , , True
Zum Betrachten einer Datei im Format .snp muss der Empfänger nicht über Access, wohl aber über den Snapshot Viewer verfügen. Dieser kann in Artikel 175274 der Microsoft Knowledge Base heruntergeladen werden.
Unternehmen räumen der Entwicklung technischer und digitaler Führungskompetenzen ein zu geringe Priorität ein. Gartner fordert…
Betroffen sind Android 12, 13, 14 und 15. Google sind zielgerichtete Angriffe auf die beiden…
Schadprogramm der pakistanischen Hackergruppe APT36 weitet seine Aktivitäten aus und verbessert seine Techniken.
Tenable vergibt für beide Schwachstellen einen CVSS-Basis-Score von 9,8. Zwei Use-after-free-Bugs erlauben möglicherweise das Einschleusen…
Erstmals liegen Preise für Verbraucher vor. Sie zahlen weniger als Geschäftskunden. Dafür beschränkt Microsoft den…
Die Entwickler arbeiten noch an weiteren „Verfeinerungen“. Windows Insider erhalten nun wohl eine erste Vorschau…