Briefe erstellen und verwalten

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:

  • Vorschau anzeigen: öffnet den Bericht rptBrief in der Vorschauansicht.
  • Brief anzeigen: öffnet die Briefdetails für den aktuell ausgewählten Brief.
  • Neuer Brief: öffnet die Briefdetails mit einem leeren Brief.
  • Brief kopieren: Legt einen neuen Brief an, kopiert alle Daten mit Ausnahme von Datum, Betreff und Inhalt des aktuell ausgewählten Datensatzes und zeigt den neuen Brief an.
  • Brief löschen: Löscht den aktuell ausgewählten Brief.
  • 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

    Schreibe einen Kommentar