Access/Word Serienbrief-Probleme

Hallo zusammen!

Ich bastel (immer noch…) an einer Access-Datenbank mit Seriendruckfunktion, die Word benutzt, und habe da folgendes Problem:

In der Datenbank sind große Textblöcke hinterlegt, die in die Serienbriefe eingefügt werden (es geht um verschiedene Absagetexte auf Bewerbungen). Nun kommen in diesen Textblöcken aber hin und wieder Datensatz-spezifische Angaben vor (Beispielsweise ein Datum oder ein Name oder das Berufsbild, um das es geht).

Meine einzige Idee war, die großen Textblöcke in kleinere zu zerlegen, und zwar genau an den Stellen mit den spezifischen Angaben, so daß z.B. der Name zwischen den beiden Blöcken als Seriendruckfeld eingefügt werden kann. Das ist allerdings extrem unschön, da ich dann in der Datenbank statt einem schönen dicken Textblock ganz viele kleine speichern muß. Außerdem noch pro Absagegrund unterschiedlich viele, da in den verschiedenen Texten diese spezifischen Angaben unterschiedlich häufig vorkommen.

Toll wäre es, wenn man in der Datenbank im Textblock einfach so was wie > eingeben könnte, und Word würde das dann beim zusammenstellen der Serienbriefe ersetzen - das geht aber nicht. :frowning:

Also, wenn hier jemand eine Idee hätte, wäre ich wirklich sehr dankbar!

Viele Grüße,

Hendrik.

Hallo Hendrik!

M. E. wärst Du mit Deiner Frage besser im Access-Forum aufgehoben, aber nichtsdestotrotz hier die Antwort wie ich es machen würde. Es gibt bestimmt viele Wege.
Die Aufteilung der Textblöcke ist eigentlich sinnvoll. Deine sogenannten „schönen“ dicken Textblöcke haben nämlich den unschönen Nachteil, daß sie (wahrscheinlich) in Memo-Feldern gespeichert sind und diese dann, neben einigen anderen Einschränkungen, die Datenzugriffe verlangsamen. Aber egal, zu Deinem Problem unter der Voraussetzung, daß Du nur einen Block hast:
Schreib’ doch einfach, wie Du bereits vorgeschlagen hast die Feldnamen mit einem eindeutigen Bezeichner als Anfang und Ende in den Text hinein z. B. >
Bei Änderung des Datensatzes im Formular änderst Du auch gleichzeitig den (personenbezogen abgespeicherten) Text durch suchen und Ersetzen der entsprechenden Textblöcke (Funktion anhängend). Diesen Textblock übergibst Du dann genau wie jedes andere Feld auch an Word.

Noch ein Tip:
Spare Dir die Übergabe an Word und mache lieber den Ausdruck in Access. Damit hast Du einen haufen Probleme gespart und „nur“ den Nachteil, daß Du nur feldweise formatieren kannst.

Ein weiterer Tip:
Schau’ Dir mal Software zur Zeugniserstellung an (z. B. http://www.zeugnis-profi.de), die liefern gute Ideen für Dein Anwendungsgebiet. Auch hier werden die Texte häppchenweise gespeichert. Der Ausdruck erfolgt per gleichem Programm.

Gruß

Alex

Function TextErsetzen(Optional ZuDurchsuchenderText, Optional SuchenNach, Optional ErsetzenMit) As String

'Entwickelt zum Ersetzen von Textfragmenten durch anderen Text
'HIN:
’ ZuDurchsuchenderText: Der zu durchsuchende Text
’ SuchenNach: Wonach soll gesucht werden?
’ ErsetzenMit: Wodurch soll das gefundene Textfragment ersetzt werden?

'RÜCK:
’ Text mit ersetztem Fragment
'HINWEIS: Ersetzt natürlich nur das erste Vorkommen des gesuchten Textes!
'________________________________________________________________________________

If IsMissing(ZuDurchsuchenderText) Or IsNull(ZuDurchsuchenderText) = True Then
TextErsetzen = „“
Exit Function
End If
If IsMissing(SuchenNach) Or IsNull(SuchenNach) = True Then SuchenNach = „“
If IsMissing(ErsetzenMit) Or IsNull(ErsetzenMit) = True Then ErsetzenMit = „“

If InStr(ZuDurchsuchenderText, SuchenNach) > 1 Then
TextErsetzen = left(ZuDurchsuchenderText, InStr(ZuDurchsuchenderText, SuchenNach) - 1) & ErsetzenMit & Right(ZuDurchsuchenderText, Len(ZuDurchsuchenderText) - (InStr(ZuDurchsuchenderText, SuchenNach) + Len(SuchenNach) - 1))
Else
TextErsetzen = ZuDurchsuchenderText
End If

End Function

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hey, danke für die Tipps! Werde ich mal ausprobieren, hört sich ganz gut an… :smile:

Hendrik.