Briefe erstellen und verwalten

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.

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

Abb. 1: Datenmodell der Musterlösung

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

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar