Adressverwaltung plus Serienbrief

André Minhorst, Duisburg

Die Adressverwaltung von Access im Unternehmen erhält eine weitere neue Funktion: Nach dem Drucken von Etiketten ist nun die Erstellung von Serienbriefen die nächste Erweiterung der Musterlösung, die auf die gespeicherten Adressdaten zugreift. Die nachfolgenden Seiten enthalten eine Beschreibung, wie man die im Beitrag Serienbriefe mit Word und Access vorgestellten Methoden in die Adressverwaltung integriert.

Die auf der Heft-CD befindlichen und im Internet unter der Adresse www.access-im-unternehmen.de herunterzuladenden Datenbankdateien AdressSB97.mdb (für Access 97) und AdressSB00.mdb (für Access 2000 und höher) enthalten die komplette Adressverwaltung inklusive der Funktionen zum Erstellen von Serienbriefen auf Basis der gespeicherten Adressdaten.

Neueinsteiger bezüglich dieser Adressverwaltung können direkt die aktuelle Version verwenden und mit den im Kapitel 2 vorgestellten Funktionen beginnen. Wer genauere Informationen zur Herstellung und zu den verschiedenen Techniken des zur Auswahl der Serienbriefadressaten dienenden Formulars sucht, wird in Kapitel 3 und 4 fündig werden.

Bild 1: Aufruf des Formulars frmSerienbriefe

Wer schon vorher mit der Adressverwaltung gearbeitet hat, möchte möglicherweise die vorhandenen Adressen weiterbenutzen – in dem Fall kann man einfach die relevanten Tabellen löschen und aus der alten Datenbank importieren.

Nach der Erstellung einer Adressverwaltung mit den grundlegenden Funktionen und Schnittstellen für den Austausch von Adressdaten mit Outlook in Ausgabe 4/2003 und 6/2003 und der Erweiterung um die Fähigkeit, individuelle Adressetiketten zu drucken in Ausgabe 3/2004, stellt der vorliegende Artikel die Möglichkeit vor, die gespeicherten Adressen als Grundlage für die Erstellung von Serienbriefen zu verwenden. Dabei beschreibt dieser Beitrag nicht die eigentliche Erstellung der Serienbriefe, sondern speziell die Auswahl der gewünschten Adressaten.

Die Grundlagen für die Verwendung von Serienbriefen und für den Aufbau der notwendigen Routinen für die Fernsteuerung von Word durch eine Access-Anwendung vermittelt der Beitrag Serienbriefe mit Word und Access, der ebenfalls in der vorliegenden Ausgabe von Access im Unternehmen enthalten ist.

Bild 2: Dialog zum Erstellen von Serienbriefen

Vorgehensweise zur Erstellung von Serienbriefen mit derAdressverwaltung

Für die Erstellung von Serienbriefen bringt die aktuelle Version der Adressverwaltung einen neuen Menüeintrag mit, über den man das Formular zur Durchführung der weiteren Schritte öffnen kann (siehe Bild 1).

Anschließend erscheint direkt das Formular aus Bild 2. Es beinhaltet als Hauptsteuerelement ein Unterformular, das alle vorhandenen Personen, Unternehmen sowie Kombinationen aus Unternehmen und Personen als Ansprechpartner anzeigt. Dabei kann man die unterschiedlichen Kategorien nur dadurch unterscheiden, dass eine Person keinen Eintrag in der Spalte Unternehmen aufweist, dass ein Unternehmen ohne Ansprechpartner keinen Ansprechpartner aufweist und dass für Unternehmen mit Ansprechpartner beide Versionen vorhanden sind.

Die Unterschiede treten deutlicher zu Tage, wenn man mit den entsprechenden Kontrollkästchen die einzelnen Kontaktarten herausfiltert. Die jeweiligen Einträge haben in der letzten Zeile je ein Feld, in dem man durch Setzen eines Häkchens festlegen kann, ob der aktuelle Eintrag als Adressat für den zu erstellenden Serienbrief in Frage kommt. Mit den Optionen unter der überschrift Ein-/Ausblenden von Kontaktarten kann man jeweils alle, nur die aktivierten oder nur die nicht aktivierten Einträge anzeigen lassen.

Die beiden Schaltflächen Alle markieren und Keinen markieren dienen jeweils den der Aufschrift zu entnehmenden Aktionen.

Nach erfolgter Auswahl der zu verwendenden Adressaten legt man über die beiden Textfelder im unteren Bereich zwei Pfade fest. Der erste gibt an, aus welchem Verzeichnis man die Vorlage auswählt und im zweiten wird das Ergebnis gespeichert – sprich die Steuerungsdatei für den Serienbrief sowie der resultierende Serienbrief.

Nach einem Klick auf die Schaltfläche Serienbrief erstellen geht es dann rund: Access fragt zunächst, ob man eine vorhandene Vorlage verwenden oder eine neue Vorlage erstellen möchte (siehe Bild 3).

Bild 3: Neue oder vorhandene Vorlage

Nach der Auswahl einer neuen Vorlage mit Hilfe eines Datei öffnen-Dialoges öffnet die Adressverwaltung eine Instanz von Microsoft Word mit der gewünschten Serienbriefvorlage (siehe Bild 4). Genau genommen passiert im Hintergrund eine Menge mehr. Access erledigt nämlich alle Schritte, die bis zum eigentlichen Ausgeben der einzelnen Briefe an den Drucker oder in ein neues Dokument erforderlich sind. Der Benutzer muss an dieser Stelle nur noch auf die Schaltfläche Seriendruck in neues Dokument oder auf eine der anderen möglichen Schaltflächen klicken, dann erstellt Word die gewünschten Dokumente.

Bild 4: Erstellen des Serienbriefes

Das Formular mit der Entwurfsansicht aus Bild 5 dient der Auswahl der Adressaten eines Serienbriefes und dem anschließenden Starten der Serienbrieferstellung. Die nachfolgenden Abschnitte erläutern die Erstellung dieses Formulars. Das Hauptsteuerelement des Formulars ist das Unterformular sfmSerienbriefe zur Anzeige der Adressaten eines Serienbriefes. Das Unterformular ist wie in Bild 6 aufgebaut.

Datenherkunft des Unterformulars sfmSerienbriefe

Die im Unterformular sfmSerienbriefe anzuzeigenden Daten stammen aus zwei Tabellen: der Tabelle tblPersonen und der Tabelle tblUnternehmen.

Die nachfolgend beschriebene Vorgehensweise ermöglicht es, die Daten aus den beiden Tabellen gleichzeitig als Adressaten eines Serienbriefes zu verwenden. Um aus den bei-den Tabellen die drei unterschiedlichen Kontaktarten Per-sonen, Unternehmen ohne und Unternehmen mit Ansprechpartnern zu ermitteln, benötigt man zunächst drei Abfragen namens qrySerienbriefPersonen, qrySerienbriefUnternehmen und qrySerienbriefUnternehmenAnsprechpartner.

Diese drei Abfragen sind völlig gleich aufgebaut, damit man ihre Daten in einer weiteren Abfrage namens qrySerienbriefeAlle per UNION-Schlüsselwort zusammenführen kann. Zuletzt fasst die Abfrage qrySerienbriefeQuelle den Inhalt dieser Abfrage mit der Tabelle tblSerienbriefeJaNein zusammen, die Informationen darüber speichert, ob der jeweilige Kontakt den entsprechenden Serienbrief erhalten soll oder auch nicht.

Die Abfragen im Detail

Die Abfrage qrySerienbriefPerson enthält die Daten aller Einzelpersonen aus der Tabelle tblPersonen sowie – falls vorhanden – die ausgewählte Anrede und Briefanrede (siehe Bild 7).

Bild 5: Entwurfsansicht des Formulars zur Auswahl von Serienbriefadressaten

Bild 6: Aufbau des Unterformulars sfmSerienbriefe

Der komplette SQL-Ausdruck der Abfrage ist in Quellcode 1 dargstellt, da die Abbildung nicht alle vorhandenen Felder anzeigt.

Der Grund für den neu kreierten eindeutigen Index besteht darin, dass man später zu jeder Person, zu jedem Unternehmen ohne und jedem Unternehmen mit Ansprechpartner einen Eintrag in der Tabelle tblSerienbriefJaNein erstellen können soll.

Bild 7: Aufbau der Abfrage qrySerienbriefPersonen

Da jeweils die Autowert-Funktion für die Erstellung der Primärschlüsselwerte der beiden zugrunde liegenden Tabellen tblPersonen und tblUnternehmen verantwortlich ist, kann es dazu kommen, dass ein Index in beiden Tabellen vorkommt. Damit man für jede Person, jedes Unternehmen und die unterschiedlichen Kombinationen aus Unternehmen und Ansprechpartnern einen Eintrag in der Tabelle tblSerienbriefJaNein erzeugen kann, bilden die drei Abfragen qrySerienbriefPersonen, qrySerienbriefUnternehmen und qrySerienbriefUnternehmenAnsprechpartner jeweils einen eigenen, eindeutigen Index. Dieser stammt aus einem Kürzel für die jeweilige Art und aus dem Primärindex aus der Tabelle tblPersonen oder tblUnternehmen.

SELECT "P" & [tblAdressen].[AdressID] AS UniqueID, tblAdressen.AdressID AS ID,"tblAdressen" AS Herkunftstabelle, "" AS Unternehmen, tblAnreden.Anrede, tblBriefanreden.Briefanrede, tblAdressen.Vorname, tblAdressen.Nachname, tblAdressen.Strasse, [PLZ] & " " & [Ort] AS PLZUndOrt, tblAdressen.LandFROM tblBriefanreden RIGHT JOIN     (tblAnreden RIGHT JOIN tblAdressen ON tblAnreden.AnredeID = tblAdressen.AnredeID) ON tblBriefanreden.BriefanredeID = tblAdressen.BriefanredeID;

Quellcode 1

SELECT "U" & [tblUnternehmen].[UnternehmenID] AS UniqueID, tblUnternehmen.UnternehmenID AS ID, "tblUnternehmen" AS Herkunftstabelle, tblUnternehmen.Unternehmen, "" AS Anrede, "" AS Briefanrede, "" AS Vorname, "" AS Nachname, tblUnternehmen.Strasse, [PLZ] & " " & [Ort] AS PLZUndOrt, tblUnternehmen.Land
FROM tblUnternehmen;

Quellcode 2

SELECT "U" & [tblUnternehmen].[UnternehmenID] & "A" & [tblAdressen].[AdressID] AS UniqueID, tblAdressen.AdressID AS ID, "tblAdressen" AS Herkunftstabelle, tblUnternehmen.Unternehmen, tblAnreden.Anrede, tblBriefanreden.Briefanrede, tblAdressen.Vorname, tblAdressen.Nachname, tblUnternehmen.Strasse, [tblUnternehmen].[PLZ] & " " & [tblUnternehmen].[Ort] AS PLZUndOrt, tblUnternehmen.Land
FROM tblBriefanreden RIGHT JOIN 
    (tblAnreden RIGHT JOIN 
        (tblUnternehmen INNER JOIN tblAdressen ON tblUnternehmen.UnternehmenID = _        tblAdressen.UnternehmenID) 
    ON tblAnreden.AnredeID = tblAdressen.AnredeID) 
ON tblBriefanreden.BriefanredeID = tblAdressen.BriefanredeID;

Quellcode 3

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar