Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
André Minhorst, Duisburg
Das Erstellen von Briefen ist eigentlich das Spezialgebiet von Textverarbeitungen wie Microsoft Word. Es gibt allerdings genügend Gründe, einmal über den Tellerrand zu schauen und dabei einen Blick auf Access zu werfen. Access bildet in Form der Bereitstellung von Adresstabellen die Grundlage für die Erstellung vieler Serienbriefe. Es enthält ein Objekt namens Bericht, das prinzipiell für die Erstellung von Briefen geeignet ist. Und außerdem bietet es die Möglichkeit, die in einem Brief enthaltenen Informationen und die Adressaten zu speichern und damit leichter zu verwalten – das sind mindestens drei Gründe, um die Brieftauglichkeit von Access im Rahmen einer Musterlösung genau zu untersuchen.
Hinweis
Auf der beiliegenden Heft-CD finden Sie die Beispieldatenbanken zu der vorliegenden Musterlösung unter den Dateinamen Adress97.mdb (Access 97) und Adress00.mdb (Access 2000 und Access XP).
Wenn in Zusammenhang mit der Erstellung von Briefen von Microsoft Access die Rede ist, dann soll in der Regel ein in Word erstelltes Serienbriefdokument mit den in Access gespeicherten Adressen verknüpft werden. Das ist sicher die gängigste Methode, um beispielsweise Serienbriefe zu erstellen. Für Leute mit wenig Office-Kenntnissen ist dies aber dennoch meist eine zu große Hürde, sodass die Erstellung von Serienbriefen oft in eine Copy&Paste-Orgie ausartet.
Wenn Sie also verhindern möchten, dass einer Ihrer Mitarbeiter oder vielleicht auch Freunde und Bekannte an solchen oder ähnlichen Problemen scheitern, sollten Sie sich den vorliegenden Beitrag sowie die dazugehörende Musterlösung einmal genauer ansehen. Damit lassen sich nicht nur Serienbrief-, sondern auch noch ganz andere Probleme lösen. Im ersten, vorliegenden Teil dieser Beitragsreihe erfahren Sie, wie Sie einfache Briefe mit geringstmöglichem Aufwand in Access erstellen können. Dazu gehört, dass Sie einmalig eine Vorlage erstellen, die festlegt, an welche Stelle die Anschrift kommt, wie der Briefkopf aussehen soll, wie sich das Layout der ersten und der Folgeseiten unterscheiden und an welcher Stelle sich der eigentliche Inhalt des Briefes befindet. Im zweiten Teil in Ausgabe 1/2004 von Access im Unternehmen fügen Sie der Anwendung weitere Funktionen hinzu. Welche das sind, erfahren Sie in Kapitel 6 des vorliegenden Beitrags.
Das Datenmodell für die im ersten Teil der Briefverwaltung vorgestellten Funktionen ist gegenüber dem kompletten Datenmodell stark vereinfacht. Es enthält lediglich eine Tabelle zum Speichern der Daten je eines Briefes sowie eine Tabelle zum Speichern von Absenderinformationen.
Hinweis
Im Rahmen des ersten Teils dieser Beitragsreihe soll zunächst die grundlegende Funktionalität der Briefverwaltung erläutert werden. Später kommen Funktionen wie die Verwendung von Adressen aus externen Adressdatenbanken und so weiter hinzu. Daher enthält die vorliegende Fassung der Musterlösung zum Beispiel keine eigene Tabelle zur Verwaltung der Empfängeradressen.
Bild 1 zeigt das Datenmodell der Musterlösung. Die Tabelle tblBriefe enthält alle Daten, die für das Ausdrucken eines Briefes erforderlich sind. Da die Daten der Briefe gespeichert, aber eventuelle änderungen an den Daten der Adressaten nach dem Erstellen von Briefen in dieser Tabelle nicht berücksichtigt werden sollen, werden auch alle Adressdaten des Empfängers in der Tabelle gespeichert. Das bezieht sich auf die Daten Firma, Anrede, Vorname, Nachname, Straße, PLZ, Ort und Land. Das Feld Betreff enthält die Betreffzeile des Briefes. Das wichtigste Feld ist das Feld Inhalt. Es enthält den in Form eines RTF-Dokumentes gespeicherten Text des Briefes.
Die verknüpfte Tabelle tblRTFAbsaetze ist eine Tabelle zum temporären Speichern von Daten.
Bild 1: Datenmodell der Musterlösung
Bild 2: Formular zur Verwaltung von Briefen
Die Tabelle hat folgende Funktion: Der Inhalt des Memofeldes zum Speichern des Textes im RTF-Format kann unter Umständen so groß werden, dass er nicht mehr auf eine Briefseite passt und umbrochen werden muss.
Das RTF-Steuerelement, das der Anzeige des Textes dient, kann die Position des Umbruchs nicht steuern und bricht möglicherweise so um, dass eine Zeile genau im Umbruch liegt und auf der ersten Seite nur die obere Hälfte der Zeile enthält. Daher wird der Inhalt in die einzelnen Absätze aufgeteilt und in mehreren Datensätzen gespeichert. Dadurch kann ein Umbruch nur zwischen zwei Absätzen erfolgen.
Hinweis
Ausführliche Informationen zu diesem Thema erhalten Sie im Beitrag Formatierte Texte in Berichten in der vorliegenden Ausgabe von Access im Unternehmen.
Die Datenbank enthält neben dem Startformular zwei weitere Formulare. Die beiden Formulare dienen der Verwaltung von Briefen und der Anzeige eines einzelnen Briefes zum Bearbeiten.
Funktionalität in Menüleisten
Neben den Formularen enthält die Datenbank gleich drei verschiedene Menüleisten. Aus Gründen der übersichtlichkeit wurde versucht, die Formulare nicht unnötig mit Schaltflächen zu überfrachten. In einigen Fällen ist das besonders sinnvoll, zum Beispiel, wenn eine Funktion von mehreren Formularen aus aufgerufen werden kann. Wenn Sie die Funktion in einer Menü- oder Symbolleiste unterbringen, können sich die Anwender vermutlich leichter an sie gewöhnen, als wenn die Funktion in verschiedenen Formularen in Form einer Schaltfläche untergebracht ist, die sich dazu noch immer an anderen Stellen befindet.
Die einzelnen Menüleisten werden in Zusammenhang mit den jeweiligen Formularen und Funktionen vorgestellt.
Verwalten der Briefe
Private Sub cmdSuche_Click() Dim strSQL As String Dim strSucheInhalt As String strSucheInhalt = Nz(Me.txtInhalt, "") strSQL = "SELECT * FROM tblBriefe WHERE " If IsNull(Me.txtDatumVon) Then strSQL = strSQL & " Datum >= " & ISODatum("1.1.1900") Else strSQL = strSQL & " Datum >= " & ISODatum(Me.txtDatumVon) End If If IsNull(Me.txtDatumBis) Then strSQL = strSQL & " AND Datum <= " & ISODatum(Date) Else strSQL = strSQL & " AND Datum <= " & ISODatum(Me.txtDatumBis) End If If Not IsNull(Me.txtInhalt) Then strSQL = strSQL & " AND (Betreff LIKE ""*" & strSucheInhalt & "*""" strSucheInhalt = ZeichenErsetzen(strSucheInhalt, "ä", "\''e4") strSucheInhalt = ZeichenErsetzen(strSucheInhalt, "ö", "\''f6") ''...weitere Ersetzungen strSQL = strSQL & " OR Inhalt LIKE ""*" & strSucheInhalt & "*"")" End If If Not IsNull(Me.txtEmpfaenger) Then strSQL = strSQL & " AND" strSQL = strSQL & " (Vorname LIKE ""*" & Me.txtEmpfaenger & "*""" ''...weitere Kriterien strSQL = strSQL & " OR Land LIKE ""*" & Me.txtEmpfaenger & "*"")" End If Me.RecordSource = strSQL Me.Requery End Sub
Quellcode 1
Das Formular frmBriefe gibt eine übersicht über alle vorhandenen Briefe und enthält eine Möglichkeit, nach verschiedenen Kriterien zu filtern (siehe Bild 2).
Das Formular kann über den Menüeintrag Briefe/Briefauswahl geöffnet werden. Nach dem öffnen dieses Formulars erscheint die damit verknüpfte Symbolleiste (siehe Bild 3).
Dort können Sie folgende Funktionen aufrufen:
Bild 3: Die Funktionen der Briefübersicht sind über die Symbolleiste zu erreichen.
Bild 4: Formular zum Bearbeiten eines Briefes
Filtern von Briefen
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