{"id":55000135,"date":"2003-12-01T00:00:00","date_gmt":"2020-05-06T15:17:35","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=135"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Formatierte_Texte_in_Berichten","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/","title":{"rendered":"Formatierte Texte in Berichten"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/4a25ae57aec046e190ee4ff0507c29d0\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Eines der gr&ouml;&szlig;ten Hindernisse bei der Verschmelzung von Datenbankanwendung und Textverarbeitung ist die fehlende F&auml;higkeit von Access, formatierte Texte zu verarbeiten. Dies ist aber zum Beispiel mit RTF-Editoren m&ouml;glich, die es auch als ActiveX-Steuerelemente f&uuml;r Access gibt. Von den zwei bekanntesten Alternativen &#8222;Total Access Memo&#8220; und &#8222;RTF2 Active Control&#8220; lernen Sie im vorliegenden Beitrag das Letztere, Kostenlose kennen. Mit ein paar Tricks ist es damit sogar m&ouml;glich, mehrseitige Dokumente mit sauberen Umbr&uuml;chen auf den Seiten eines Berichts zu verteilen. <\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Sie finden die Beispieldatenbanken RTF97.mdb (Access 97) und RTF00.mdb (Access 2000 und h&ouml;her) auf der beiliegenden Heft-CD im Verzeichnis \\mdb oder im Bereich Magazine von www.access-im-unternehmen.de. Bitte beachten Sie, dass f&uuml;r die Verwendung der Beispieldatenbanken die Installation eines zus&auml;tzlichen Steuerelements  erforderlich ist (s. Kapitel 1). <\/p>\n<p>Die Darstellung von Texten mit unterschiedlich formatierten Bereichen ist mit den Bordmitteln von Access nur in bestimmten F&auml;llen m&ouml;glich &#8211; n&auml;mlich bei der Verwendung unterschiedlicher Steuerelemente f&uuml;r die verschiedenen Textformatierungen. Da dies nicht praxisrelevant ist, behilft man sich externer Steuerelemente.<\/p>\n<h3>Rich Text-Steuerelemente<\/h3>\n<p>Das Rich Textbox Control von Microsoft kann zur Eingabe von Texten im RTF-Format in Formularen, aber nicht zu deren Ausgabe in Berichten verwendet werden. <\/p>\n<p>Eine kostenpflichtige Alternative ist das Steuerelement Total Access Memo von FMS. Es kann in Formularen und Berichten eingesetzt werden, schl&auml;gt aber mit knapp 300 Euro f&uuml;r eine einzelne Lizenz zu Buche. Daf&uuml;r kann es als Bestandteil eigener L&ouml;sungen kostenlos verteilt werden (weitere Informationen unter www.fmsinc.com).<\/p>\n<p>Die Freeware-Alternative hei&szlig;t RTF2 Active Control und ist bei Stephen Lebans unter www.lebans.com erh&auml;ltlich. Da es sich hierbei um ein kostenloses Steuerelement  handelt, soll es im vorliegenden Beitrag vorgestellt werden.<\/p>\n<h3>Wozu Rich Text<\/h3>\n<p>Access l&auml;sst an keiner Stelle unterschiedlich formatierte Texte innerhalb eines Standardsteuerelements beziehungsweise Tabellenfeldes zu &#8211; es sei denn, Sie verwenden ein OLE-Feld und bringen dort ein Word-Dokument oder &auml;hnliches unter. F&uuml;r manche Anwendungen ist es aber durchaus sinnvoll, mit unterschiedlichen Formatierungen zu arbeiten. Eine dieser Anwendungen ist die in der vorliegenden Ausgabe von Access im Unternehmen vorgestellte Musterl&ouml;sung zum Verwalten von Briefen.<\/p>\n<h3>Technik von Rich Text in Access<\/h3>\n<p>Die erw&auml;hnten RTF-Steuerelemente dienen zum Eingeben, Bearbeiten und Formatieren von Texten. Die beiden Letzteren und damit auch das hier vorgestellte RTF2 Active Control k&ouml;nnen au&szlig;erdem in Berichten verwendet werden. Sollen die eingegebenen Texte inklusive Formatierungen in einer Tabelle gespeichert werden, ist dazu ein Memofeld erforderlich. Dort speichert Access den Inhalt des Steuerelements inklusive der ben&ouml;tigten Angaben zur Formatierung. Das Steuerelement  wandelt die Steuerzeichen zur Anzeige in Formularen und Berichten entsprechend um.<\/p>\n<p>Das RTF2 Active Control kann von der Internetseite von Stephan Lebans (www.lebans.com) heruntergeladen werden. Nach dem Entpacken und Installieren steht das Steuerelement in Access in der Liste der ActiveX-Steuerelemente zur Verf&uuml;gung.<\/p>\n<h2>RTF im Formular<\/h2>\n<p>Um das Steuerelement einem Formular hinzuzuf&uuml;gen, gehen Sie folgenderma&szlig;en vor:<\/p>\n<li>&ouml;ffnen Sie das Formular in der Entwurfsansicht.<\/li>\n<p><IMG height=\"283\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic001.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Das RTF2-Steuerelement in der Entwurfsansicht<\/span><\/b><\/p>\n<p><IMG height=\"260\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Formateinstellungen per Kontextmen&uuml;<\/span><\/b><\/p>\n<li>Rufen Sie den Dialog ActiveX-Steuerelement einf&uuml;gen &uuml;ber den Men&uuml;eintrag Einf&uuml;gen\/ActiveX-Steuerelement&#8230; auf.<\/li>\n<li>W&auml;hlen Sie hier den Eintrag RTF2 Control aus.<\/li>\n<li>Passen Sie die Gr&ouml;&szlig;e Ihren W&uuml;nschen entsprechend an (siehe Bild 1). (<\/li>\n<h3>Das RTF-Steuerelement in Aktion<\/h3>\n<p>Wenn Sie das Formular nun in der Formularansicht anzeigen, k&ouml;nnen Sie zun&auml;chst einmal recht wenig mit dem Steuerelement anstellen. Ein Klick mit der rechten Maustaste &ouml;ffnet aber direkt das Kontextmen&uuml; (siehe Bild 2). Damit lassen sich alle ben&ouml;tigten Formateinstellungen vornehmen (vorausgesetzt, Sie m&ouml;chten mit Access keine mehrspaltigen B&uuml;cher schreiben &#8211; in diesem Fall sei Ihnen die Verwendung von Word empfohlen).<\/p>\n<p>Wenn Sie den mit dem Steuerelement eingegebenen Text in einer Tabelle speichern m&ouml;chten, m&uuml;ssen Sie zun&auml;chst die Datenherkunft des Formulars auf die Tabelle einstellen und die Eigenschaft Steuerelementinhalt des RTF2-Steuerelements auf das Feld einstellen, in dem die Daten gespeichert werden sollen.<\/p>\n<p>Erstellen Sie zu Testzwecken eine Tabelle wie in Bild 3. &ouml;ffnen Sie das Formular mit dem RTF2-Steuerelement  in der Entwurfsansicht und stellen Sie die Eigenschaft Datenherkunft auf den Wert tblRTF ein.<\/p>\n<p>Aktivieren Sie das RTF2-Steuerelement und w&auml;hlen Sie f&uuml;r die Eigenschaft Steuerelementinhalt den Eintrag RTFInhalt aus.<\/p>\n<p>Wechseln Sie nun in die Formularansicht und geben Sie einen beliebigen Text ein. Wenn Sie nach der Aktualisierung des Datensatzes die Tabelle &ouml;ffnen, finden Sie die Fassung des Textes inklusive Formatdefinition vor (siehe Bild 4).<\/p>\n<p>Wie hier gut zu erkennen ist, schart sich eine Menge kryptisch anmutendender Steuerelemente rund um den eigentlichen Text. Prinzipiell &auml;hnelt RTF der Sprache HTML: Es gibt einen Kopf mit allgemeinen Informationen und verschiedene Abs&auml;tze, denen absatzweit g&uuml;ltige Steuerelemente vorangestellt sind und die auch innerhalb des Textes Steuerelemente zur speziellen Auszeichnung bestimmter Textelemente enthalten k&ouml;nnen.<\/p>\n<p>Das RTF2-Steuerelement enth&auml;lt eine eigene Bibliothek von Methoden und Eigenschaften, mit denen sich das Steuerelement anpassen l&auml;sst. Einen Gro&szlig;teil der M&ouml;glichkeiten k&ouml;nnen Sie anhand der beiden ebenfalls auf der Internetseite von Stephen Lebans erh&auml;ltlichen Beispieldatenbanken kennen lernen. Die beiden Beispieldatenbanken f&uuml;r Access 97 und Access 2000 enthalten speziell auf dieses Steuerelement  zugeschnittene Men&uuml;leisten, die die Anwendung der zur Verf&uuml;gung stehenden Eigenschaften ausreichend dokumentieren.<\/p>\n<p>Falls Sie keine Men&uuml;leiste verwenden m&ouml;chten, sondern mit im Formular integrierten Schaltfl&auml;chen vorlieb nehmen, sollten Sie Folgendes beachten: Die Ausstattung von Schaltfl&auml;chen mit Symbolen ist nur beschr&auml;nkt m&ouml;glich.<\/p>\n<p><IMG height=\"86\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic003.png\" width=\"261\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Tabelle zum Speichern von RTF-Texten<\/span><\/b><\/p>\n<p><IMG height=\"143\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Ein RTF-Text im Memofeld einer Tabelle<\/span><\/b><\/p>\n<p>Da Microsoft mit Windows XP vom ehemaligen Einheitsgrau f&uuml;r Schaltfl&auml;chen auf ein anderes Grau wechselte, f&uuml;hrt die Verwendung von eigenen Schaltfl&auml;chen zu optischer Verwirrung:<\/p>\n<p>Der Hintergrund der Schaltfl&auml;chen passt sich n&auml;mlich nicht dem neuen Grau an und hinterl&auml;sst damit einen sehr unprofessionell wirkenden Eindruck.<\/p>\n<p>Die Verwendung von Schaltfl&auml;chen auf einer Symbolleiste ist also zumindest dann sinnvoller, wenn Sie keinen Text, sondern Symbole zur Beschreibung der jeweiligen Funktion verwenden m&ouml;chten.<\/p>\n<h3>Hinweis<\/h3>\n<p>Weitere Hinweise zur Erstellung von benutzerdefinierten Men&uuml;leisten erhalten Sie in den Beitr&auml;gen Dynamische Men&uuml;s mit VBA in Ausgabe 4\/2003 und Benutzerabh&auml;ngige Befehlsleisten in der vorliegenden Ausgabe von Access im Unternehmen. <\/p>\n<h2>Funktionen zur Formatierung<\/h2>\n<p>Ob Sie die Formatierung nun per Formular- oder Men&uuml;leistenschaltfl&auml;che anpassen m&ouml;chten, bleibt Ihren pers&ouml;nlichen Vorlieben &uuml;berlassen.<\/p>\n<p>Tatsache ist, dass Sie die Funktionen zur Durchf&uuml;hrung der Format&auml;nderungen bereitstellen m&uuml;ssen.<\/p>\n<p>Zur Nutzung des vollen Befehlsumfangs eines Steuerelements lohnt sich immer ein Blick in den Objektkatalog. Dazu aktivieren Sie das Testfenster (am schnellsten &uuml;ber die Tastenkombination Strg + G) und bet&auml;tigen dann die Taste F2.<\/p>\n<p>Im nun erscheinenden Objektkatalog (siehe Bild 5) w&auml;hlen Sie den Eintrag RTF2Lib aus dem oberen Kombinationsfeld aus. Die Klasse RTF2 enth&auml;lt eine &uuml;bersicht &uuml;ber alle Methoden und Eigenschaften des Steuerelements, die &uuml;brigen Eintr&auml;ge sind Auflistungen von m&ouml;glichen Parametern f&uuml;r einige Eigenschaften.<\/p>\n<p><IMG height=\"681\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic005.png\" width=\"422\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Der Objektkatalog von Access<\/span><\/b><\/p>\n<pre>Public Function Fett()\r\n    Dim Markierung As Object\r\n    On Error Resume Next\r\n    Set Markierung = Screen.ActiveControl\r\n    If Not Markierung Is Nothing Then\r\n        Markierung.FontBold = True\r\n    End If\r\n    Set Markierung = Nothing\r\nEnd Function<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<pre>Public Function Schriftart()\r\n    Dim Markierung As Object\r\n    Dim Objekt As Object\r\n    On Error Resume Next\r\n    Set Markierung = Screen.ActiveControl\r\n    If Not Markierung Is Nothing Then\r\n        Set Objekt = Markierung.SelFont\r\n        Set Objekt = Nothing\r\n    End If\r\n    Set Markierung = Nothing\r\nEnd Function<\/pre>\n<p><!--30percent--><\/p>\n<p><b>Quellcode 2<\/b><\/p>\n<p>Sie ben&ouml;tigen nun nur noch die Information, wie Sie auf die aktuelle Markierung im RTF2-Steuerelement zugreifen k&ouml;nnen. Dazu verwenden Sie den folgenden Ausdruck:<\/p>\n<pre>Screen.ActiveControl<\/pre>\n<p>Er bezieht sich auf das jeweils aktuelle Steuerelement. Wenn das RTF-Steuerelement  aktiv ist, wirken sich die Formatierungen auf die jeweils markierten Bereiche des Steuerelements aus.<\/p>\n<h3>Hinweis<\/h3>\n<p>Die in der Beispieldatenbank vorhandenen Funktionen zur Durchf&uuml;hrung sind weitgehend den Beispieldatenbanken von Stephen Lebans entnommen und geringf&uuml;gig angepasst worden. <\/p>\n<p>Als Beispiel f&uuml;r die Funktion der unterschiedlichen Formatierungsfunktionen des Steuerelements dient das aus Quellcode 1. Die Funktion weist der Variablen Markierung das aktuelle Steuerelement hinzu, was gleichbedeutend mit der aktuellen Markierung ist. Sie &uuml;berpr&uuml;ft, ob die Markierung nicht leer ist und f&uuml;hrt dann die Formatierung f&uuml;r den markierten Bereich durch.<\/p>\n<p>Einige Formatierungen k&ouml;nnen &uuml;ber den herk&ouml;mmlichen Schriftarten-Dialog vorgenommen werden. Mit der Prozedur aus Quellcode 2 k&ouml;nnen Sie diesen Dialog aufrufen und die getroffenen Einstellungen auf die Markierung anwenden.<\/p>\n<p>Der Grund f&uuml;r die Verwendung von Daten im RTF-Format ist die formatierte Ausgabe von Texten per Bericht. Das bringt einige Probleme mit, die sich allerdings mit ein wenig Programmieraufwand umgehen lassen. In den folgenden Abschnitten erfahren Sie, wie Sie mit dem RTF2-Steuerelement erstellte Texte optimal in Berichten anzeigen.<\/p>\n<h2>Erstellen des Berichts<\/h2>\n<p>F&uuml;gen Sie dem Detailbereich eines neuen Berichts das RTF2-Steuerelement hinzu. Die Vorgehensweise ist die Gleiche wie beim Formular. Nach dem Hinzuf&uuml;gen des Steuerelements w&auml;hlen Sie die Tabelle tblRTF als Datenherkunft des Berichtes und das Feld RTFINhalt als Steuerelementinhalt f&uuml;r das RTF-Steuerelement  aus.<\/p>\n<p>Das Ergebnis finden Sie in Bild 6. Die Anzeige erfolgt mit den festgelegten Formatierungen.<\/p>\n<p><IMG height=\"222\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic006.png\" width=\"497\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6:  Anzeigen eines RTF-Textes per Bericht<\/span><\/b><\/p>\n<h2>Gr&ouml;&szlig;enanpassung desSteuerelements<\/h2>\n<p>Das RTF2-Steuerelement bringt keine Vergr&ouml;&szlig;erbar- beziehungsweise Verkleinerbar-Eigenschaft mit. Das bedeutet, dass Sie mit einem Trick arbeiten m&uuml;ssen.<\/p>\n<p>Wenn Sie die Gr&ouml;&szlig;e des Steuerelements und auch des Detailbereiches dynamisch an den Inhalt des Steuerelements anpassen m&ouml;chten, gehen Sie folgenderma&szlig;en vor:<\/p>\n<li>&ouml;ffnen Sie den Bericht in der Entwurfsansicht.<\/li>\n<li>Stellen Sie die Eigenschaft Gr&ouml;&szlig;e des Detailbereiches auf den maximalen Wert von 55,871cm und die Eigenschaften Vergr&ouml;&szlig;erbar und Verkleinerbar auf Ja ein.<\/li>\n<li>Erstellen Sie ein Textfeld, dessen Eigenschaften Oben und H&ouml;he die Werte 0cm beziehungsweise 55,871cm haben. Stellen Sie die Eigenschaften Vergr&ouml;&szlig;erbar und Verkleinerbar ebenfalls auf den Wert Ja sowie Sichtbar auf Nein ein.<\/li>\n<li>Legen Sie f&uuml;r die Ereigniseigenschaft Beim Formatieren des Detailbereichs die Prozedur aus Quellcode 3 an. (<\/li>\n<pre>Private Sub Detailbereich_Format(Cancel _    As Integer, FormatCount As Integer)\r\n    Me!ctlRTF.Height = _    Me!ctlRTF.RTFheight\r\nEnd Sub<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<h3>Hinweis<\/h3>\n<p>Die beschriebene Vorgehensweise ist weitgehend der FAQ des Total Access Memo (www.fmsinc.com) entnommen, funktioniert aber auch mit dem vorliegenden Steuerelement. <\/p>\n<p>Mit der beschriebenen Vorgehensweise wird der Detailbereich des Berichts exakt der H&ouml;he des RTF2-Steuerelements angepasst. Das funktioniert auch, wenn der Bericht mehrere RTF-Dokumente anzeigen soll &#8211; die H&ouml;he wird an jedes einzelne in einem Datensatz enthaltene Dokument angepasst.<\/p>\n<h2>Problem Seitenumbruch<\/h2>\n<p>Die Verwendung des RTF2-Steuerelements in Berichten bringt das gleiche Problem wie die Verwendung jedes anderen Steuerelements mit sich, dessen Inhalt nicht auf eine Seite passt.<\/p>\n<p>Es sieht keine M&ouml;glichkeit vor, den Inhalt kontrolliert zu umbrechen. Daher gibt es zwei M&ouml;glichkeiten: Entweder man verwendet mehrere Richtext-Elemente in einem Bericht, die beispielsweise einen Absatz lang sind, oder man versucht, den Seitenumbruch programmatisch zwischen zwei Textzeilen zu legen.<\/p>\n<p>Beides ist mit Aufwand verbunden: Wenn Sie Textelemente auf mehrere mit dem Hauptdatensatz verbundene Elemente aufteilen, m&uuml;ssen Sie sicherstellen, dass die Reihenfolge der Elemente anpassbar und die Elemente an beliebigen Positionen vor oder hinter bestehenden Elementen platziert werden k&ouml;nnen.<\/p>\n<p>Um ein einzelnes, langes Richtext-Element an der richtigen Stelle zu umbrechen, ist ebenfalls  gr&ouml;&szlig;erer Aufwand erforderlich. Access bricht automatisch am unteren Ende des Steuerelements ab und arbeitet dabei pixelgenau und nicht zeilenweise wie Textverarbeitungen wie Microsoft Word (siehe Bild 7). <\/p>\n<p><IMG height=\"191\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic007.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7:  Pixelgenauer Umbruch des RTF2-Steuerelements<\/span><\/b><\/p>\n<p>Ein L&ouml;sungsansatz w&auml;re, die Zeile zu ermitteln, die den Seitenumbruch enth&auml;lt, und vor dieser Zeile eine Leerzeile einzusetzen. So w&uuml;rde der Zeilenumbruch genau auf einer Leerzeile stattfinden und nicht zu sehen sein. Allerdings beginnt dann die folgende Seite beispielsweise mit einer halben Leerzeile, was m&ouml;glicherweise die Optik st&ouml;rt. Hier anzusetzen w&uuml;rde aber wahrscheinlich bedeuten, ein komplett neues RTF-Steuerelement zu entwickeln.<\/p>\n<p>Das Problem des Seitenumbruchs l&auml;sst sich allerdings auch auf einfache Weise l&ouml;sen: Auch in Word und anderen Textverarbeitungen ist manchmal ein wenig Nacharbeiten erforderlich, um Sch&ouml;nheitsfehler wie Hurens&ouml;hne und Schusterjungen zu verhindern.<\/p>\n<h3>L&ouml;sung mit Pfiff<\/h3>\n<p>Wie die nachfolgenden Abschnitte zeigen werden, lassen sich mit einer Kombination aus den ersten beiden Vorschl&auml;gen recht beachtliche Ergebnisse erzielen.<\/p>\n<h2>Verwendung mehrererRTF-Elemente je Dokument<\/h2>\n<p>Die in den vorherigen Abschnitten beschriebene Problematik soll durch ein paar Tricks und ein wenig RTF-Grundlagenkenntnis umgangen werden.<\/p>\n<p>Dabei ist es wichtig zu wissen, dass RTF im Prinzip wie HTML aufgebaut ist: Der Anfang eines RTF-Dokumentes enth&auml;lt einige allgemeine Informationen &uuml;ber die verwendete Syntax, Auflistungen von Schriftarten und so weiter. Die weiteren Abs&auml;tze werden &auml;hnlich wie in HTML durch einleitende Formatbeschreibungen wie Schriftart, Schriftgr&ouml;&szlig;e und so weiter definiert. Am Ende eines jeden Absatzes steht ein entsprechendes Element, um den Zeilenumbruch zu bewirken. Bereiche mit besonderen Markierungen wie beispielsweise fett gedruckte Worte werden von entsprechenden Markierungen eingeschlossen.<\/p>\n<p>Der Trick beim Aufteilen eines langen Textes in die einzelnen Abs&auml;tze ist nun, einen Parser zu programmieren, der zun&auml;chst den Kopf des Dokumentes ermittelt, das Dokument in seine Abs&auml;tze aufteilt und anschlie&szlig;end durch Voranstellen des Kopfes viele neue RTF-Dokumente erstellt.<\/p>\n<p>Das Ganze ist nat&uuml;rlich nicht so trivial, wie hier beschrieben, aber auch nicht gerade ungemein kompliziert.<\/p>\n<p>Grundlage f&uuml;r die Entwicklung eines Algorithmus zur Aufteilung von RTF-Dokumenten ist die Kenntnis der Syntax der Steuerelemente einer solchen Datei. Die Syntax ist genormt und kann in dem unter ftp:\/\/ftp.microsoft.com\/softlib\/mslfiles\/GC0165.EXE zu findenden Word-Dokument eingesehen werden.<\/p>\n<h2>Tempor&auml;re Aufteilung<\/h2>\n<p>Die Aufteilung eines RTF-Dokuments bringt mit sich, dass &auml;nderungen nicht mehr so leicht zu realisieren sind. Daher behalten Sie einfach das Originaldokument und speichern die einzelnen Abs&auml;tze f&uuml;r die Anzeige des Berichts tempor&auml;r in einer speziell daf&uuml;r vorgesehenen Tabelle.<\/p>\n<p>Die Tabelle ist wie in Bild 8 aufgebaut. Die drei Felder Originalabsatz, Kopfdaten, Steuerzeichen und Inhalt sind prinzipiell &uuml;berfl&uuml;ssig. Sie k&ouml;nnen bei eventuell auftretenden Problemen oder Weiterentwicklungen f&uuml;r das Debuging verwendet werden. Das Feld RTFID enth&auml;lt die ID des Ursprungsdokuments. Der Inhalt der neuen Abs&auml;tze wird im Feld RTFAbsatz gespeichert. Das Feld ReihenfolgeID enth&auml;lt eine fortlaufende Nummerierung der Abs&auml;tze in der richtigen Reihenfolge.<\/p>\n<pre>Public Function RichtextAufteilen(RTFID As Integer) As String\r\n    Dim db As Database\r\n    Dim rst As Recordset\r\n    Dim strRichtext As String\r\n    Dim strKopfdaten As String\r\n    Dim bolKopfdaten As Boolean\r\n    Dim intStart As Integer\r\n    Dim intEnde As Integer\r\n    Dim strSteuerzeichenVorherigerDatensatz As String\r\n    Dim strInhaltVorherigerDatensatz As String\r\n    Dim i As Integer\r\n    Set db = CurrentDb\r\n    db.Execute \"DELETE FROM tblRTFAbsaetze\"\r\n    Set rst = db.OpenRecordset(\"tblRTFAbsaetze\", dbOpenDynaset)\r\n    strRichtext = DLookup(\"RTFINhalt\", \"tblRTF\", \"RTFID = \" & RTFID)\r\n    strRichtext = Mid(strRichtext, 2, Len(strRichtext) - 1)\r\n    strRichtext = ZeichenErsetzen(strRichtext, \"\\par\" & Chr(13) & Chr(10), \"\\par \")\r\n    strRichtext = ZeichenErsetzen(strRichtext, Chr(13) & Chr(10), \"\")\r\n    strKopfdaten = Mid(strRichtext, 1, InStr(1, strRichtext, \"{\") - 1)\r\n    strRichtext = Mid(strRichtext, InStr(1, strRichtext, \"{\"))\r\n    bolKopfdaten = True<\/pre>\n<p><b>Quellcode 4 (Start)<\/b><\/p>\n<p><IMG height=\"165\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic008.png\" width=\"310\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8:  Aufbau der Tabelle tblRTFAbsaetze<\/span><\/b><\/p>\n<h2>Aufteilen des RTF-Dokuments<\/h2>\n<p>Die Funktion RichtextAufteilen ist f&uuml;r das Aufteilen eines RTF-Dokumentes in seine einzelnen Abschnitte zust&auml;ndig (s. Quellcode 4). Als &uuml;bergabeparameter erwartet sie die ID des Datensatzes aus der Tabelle tblRTF, in dem sich das Originaldokument befindet.<\/p>\n<p>Die Funktion &ouml;ffnet zun&auml;chst die Tabelle tblRTFAbsaetze und l&ouml;scht alle enthaltenen Datens&auml;tze. Dann liest sie den Quellcode des RTF-Dokuments in die Variable strRichtext ein. In den n&auml;chsten Schritten werden die umschlie&szlig;enden geschweiften Klammern entfernt, Zeilenumbr&uuml;che durch Leerzeichen ersetzt beziehungsweise gel&ouml;scht und der Kopf des Dokuments entfernt und in der Variablen strKopfdaten gespeichert. Die Zeilenumbr&uuml;che k&ouml;nnen entfernt werden, da das Steuerzeichen \\par bereits auf das Absatzende hinweist. Der in der Variablen strRichtext verbleibende Rest des RTF-Dokuments enth&auml;lt den eigentlichen Inhalt des Dokuments mit den Steuerzeichen.<\/p>\n<pre>    Do While bolKopfdaten = True\r\n        intStart = InStr(1, strRichtext, \"{\")\r\n        If Mid(Trim(strRichtext), 2, 8) = \"\\fonttbl\" Or Mid(Trim(strRichtext), 2, 8) _            = \"\\filetbl\" Or Mid(Trim(strRichtext), 2, 9) = \"\\colortbl\" Or _            Mid(Trim(strRichtext), 2, 11) = \"\\stylesheet\" Or Mid(Trim(strRichtext), _            2, 11) = \"\\listtables\" Or Mid(Trim(strRichtext), 2, 7) = \"\\revtbl\" Then\r\n            intEnde = SchliessendeKlammerFinden(strRichtext)\r\n            strKopfdaten = strKopfdaten & Mid(strRichtext, 1, intEnde)\r\n            strRichtext = Mid(strRichtext, intEnde + 1)\r\n        Else\r\n            bolKopfdaten = False\r\n        End If\r\n    Loop\r\n    intEnde = InStr(1, strRichtext, \"\\par \")\r\n    i = 1\r\n    Do While Not intEnde = 0\r\n        rst.AddNew\r\n        rst!RTFID = RTFID\r\n        rst!Originalabsatz = Mid(strRichtext, 1, intEnde - 1)\r\n        rst!Kopfdaten = strKopfdaten\r\n        rst!ReihenfolgeID = i\r\n        If Left(rst!Originalabsatz, 1) = \"\\\" Then\r\n            rst!Steuerzeichen = Mid(rst!Originalabsatz, 1, InStr(1, _                rst!Originalabsatz, \" \"))\r\n            rst!Inhalt = Mid(rst!Originalabsatz, InStr(1, rst!Originalabsatz, \" \") _                + 1)\r\n        Else\r\n            rst!Steuerzeichen = \"\"\r\n            rst!Inhalt = rst!Originalabsatz\r\n        End If\r\n        rst!Steuerzeichen = SteuerzeichenFuerNaechstenAbsatz( _            strSteuerzeichenVorherigerDatensatz, strInhaltVorherigerDatensatz, _            rst!ReihenfolgeID, rst!RTFID, rst!Steuerzeichen)\r\n        strSteuerzeichenVorherigerDatensatz = rst!Steuerzeichen\r\n        strInhaltVorherigerDatensatz = rst!Inhalt\r\n        rst!RTFAbsatz = \"{\" & rst!Kopfdaten & rst!Steuerzeichen & \" \" & rst!Inhalt _            & \"}\"\r\n        rst.Update\r\n        strRichtext = Mid(strRichtext, intEnde + 5)\r\n        intEnde = InStr(1, strRichtext, \"\\par \")\r\n        i = i + 1\r\n    Loop\r\nEnd Function<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<p>In einer Do While-Schleife werden die Abs&auml;tze nach und nach in je einem Datensatz der Tabelle tblRTFAbsaetze gespeichert. Das geschieht in mehreren Etappen: Zun&auml;chst werden die einzelnen Informationen, die leicht aus dem jeweiligen Abschnitt bis zum n&auml;chsten \\par-Steuerelement zu ermitteln sind, eingelesen. Dabei wird der Teil mit den allgemein f&uuml;r den Absatz geltenden Formatelementen vom eigentlichen Text getrennt.<\/p>\n<p>In der Funktion SteuerzeichenFuerNaechstenAbsatz wird genau ermittelt, welche &auml;nderungen sich innerhalb eines Absatzes befinden und ob diese auch f&uuml;r den n&auml;chsten Absatz gelten. Den Quellcode finden Sie in den Beispieldatenbanken auf der Heft-CD.<\/p>\n<li>Diese Funktion kann nur benutzt werden, wenn in dem RTF-Dokument ausschlie&szlig;lich die folgenden Formateigenschaften verwendet werden:<\/li>\n<li>Schriftformat (Schriftart, -gr&ouml;&szlig;e, -farbe und so weiter)<\/li>\n<li>fett, kursiv, unterstrichen<\/li>\n<li>linke, rechte, zentrierte Ausrichtung und Blocksatz<\/li>\n<pre>Public Function ZeichenErsetzen(Zeichenkette As String, Zeichen As String, _    Ersetzen As String)\r\n    Dim posZeilenumbruch As Integer\r\n    ZeichenErsetzen = Zeichenkette\r\n    posZeilenumbruch = InStr(1, ZeichenErsetzen, Zeichen)\r\n    Do While Not posZeilenumbruch = 0\r\n        ZeichenErsetzen = Left(ZeichenErsetzen, posZeilenumbruch - 1) & Ersetzen _            & Mid(ZeichenErsetzen, posZeilenumbruch + Len(Zeichen))\r\n        posZeilenumbruch = InStr(1, ZeichenErsetzen, Zeichen)\r\n    Loop\r\nEnd Function<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<pre>Public Function SchliessendeKlammerFinden(Richtext As String) As Integer\r\n    Dim i As Integer\r\n    Dim KlammerAuf As Integer\r\n    Dim KlammerZu As Integer\r\n    KlammerAuf = 0\r\n    KlammerZu = 0\r\n    For i = 1 To Len(Richtext)\r\n        If Mid(Richtext, i, 1) = \"{\" Then\r\n            KlammerAuf = KlammerAuf + 1\r\n        ElseIf Mid(Richtext, i, 1) = \"}\" Then\r\n            KlammerZu = KlammerZu + 1\r\n        End If\r\n        If KlammerAuf = KlammerZu Then\r\n            SchliessendeKlammerFinden = i\r\n            Exit For\r\n        End If\r\n    Next i\r\nEnd Function<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<p>In der Men&uuml;leiste der Beispieldatenbanken finden Sie ebenfalls nur die hier aufgelisteten M&ouml;glichkeiten der Formatierung. Weitere Formate k&ouml;nnen bei Bedarf implementiert werden.<\/p>\n<p>Nach der Ermittlung der allgemein g&uuml;ltigen Steuerelemente f&uuml;r den aktuellen Absatz wird aus dem Absatz eine g&uuml;ltige RTF-Datei erzeugt. Dazu werden die Kopfdaten, Steuerelemente und der eigentliche Inhalt zusammengesetzt, von geschweiften Klammern eingeschlossen und im Feld RTFAbsatz gespeichert.<\/p>\n<p><IMG height=\"217\" src=\"..\/fileadmin\/_temp_\/{BB709B72-EA62-47F3-B9AF-93A2A9E5F460}\/pic009.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9:  Beispiel f&uuml;r einen Bericht mit RTF-Inhalt<\/span><\/b><\/p>\n<h3>Zeichen ersetzen<\/h3>\n<p>Zum Ersetzen der Zeilenumbr&uuml;che durch Leerzeichen wird die Funktion ZeichenErsetzen verwendet. Ab Access 2000 steht f&uuml;r diese Zwecke die eingebaute VBA-Funktion Replace zur Verf&uuml;gung. Die Funktion ZeichenErsetzen erwartet die Ausgangszeichenkette, die zu ersetzende und die neue Zeichenkette als &uuml;bergabeparameter (s. Quellcode 5).<\/p>\n<h3>Finden von schlie&szlig;enden Klammern<\/h3>\n<p>Die Funktion SchliessendeKlammerFinden ist nicht so trivial, wie der Titel andeutet: In der Tat findet sie nicht einfach die n&auml;chste schlie&szlig;ende Klammer, sondern die schlie&szlig;ende Klammer, die zu der ersten in der &uuml;bergebenen Zeichenkette gefundenen &ouml;ffnenden Klammer geh&ouml;rt (s. Quellcode 6). Das bedeutet, dass eventuell vorhandene weitere Klammern ignoriert werden.<\/p>\n<h2>Anzeigen des Dokuments<\/h2>\n<p>Um das aufgesplittete RTF-Dokument im Zusammenhang zu betrachten, k&ouml;nnen Sie im Prinzip den weiter oben beschriebenen Bericht verwenden.<\/p>\n<p>Sie m&uuml;ssen lediglich die Eigenschaft Datenherkunft auf die Tabelle tblRTFAbsaetze einstellen und darauf achten, dass die Abs&auml;tze in der richtigen Reihenfolge sortiert sind. Da die Abs&auml;tze aber in der richtigen Reihenfolge angelegt wurden und Access ohne weitere Angaben nach dem Prim&auml;rindex sortiert, sind hier keine weiteren Ma&szlig;nahmen zu treffen. Das Ergebnis sieht beispielsweise wie in Bild 9 aus.<\/p>\n<p>Die vorgestellte Verwendung des RTF2-Steuerelements ber&uuml;cksichtigt noch nicht all seine F&auml;higkeiten. Es fehlen noch die M&ouml;glichkeiten, automatische Nummerierungen und Auflistungen sowie einger&uuml;ckte Abs&auml;tze und Zeilen mit variablen Zeilenabst&auml;nden auszuf&uuml;hren. Sie k&ouml;nnten diese Funktionen zwar mit wenigen Codezeilen hinzuf&uuml;gen, indem Sie die Men&uuml;leiste entsprechend erweitern und die Funktionen zum Zuweisen der entsprechenden Formatierungen hinzuf&uuml;gen. Der Knackpunkt ist aber, dass der Aufwand f&uuml;r das Anpassen der Funktion zum Umwandeln des RTF-Dokuments in viele kleine Dokumente und damit die Erm&ouml;glichung der Anzeige mehrseitiger RTF-Dokumente in Berichten relativ hoch ist.<\/p>\n<p>Mit den in der Beispieldatenbank vorliegenden Funktionen sollte dies f&uuml;r ambitionierte Entwickler allerdings m&ouml;glich sein.<\/p>\n<p>Die volle Funktionalit&auml;t entfalten die hier vorgestellten M&ouml;glichkeiten nat&uuml;rlich in einer Musterl&ouml;sung, die wir Ihnen in zwei Teilen pr&auml;sentieren: die Briefverwaltung. <\/p>\n<p>Damit k&ouml;nnen Sie Access als Textverarbeitung f&uuml;r rudiment&auml;re Anwendungen zweckentfremden und haben &uuml;berdies die M&ouml;glichkeit, Serienbriefe, Mailverteiler, Adressdatenbank und so weiter unter einen Hut zu bringen.<\/p>\n<p>Die vorliegenden Funktionen werden st&auml;ndig weiterentwickelt. &uuml;ber neue Versionen informieren Sie sich am besten unter www.access-im-unternehmen.de.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eines der gr&ouml;&szlig;ten Hindernisse bei der Verschmelzung von Datenbankanwendung und Textverarbeitung ist die fehlende F&auml;higkeit von Access, formatierte Texte zu verarbeiten. Dies ist aber zum Beispiel mit RTF-Editoren m&ouml;glich, die es auch als ActiveX-Steuerelemente f&uuml;r Access gibt. Von den zwei bekanntesten Alternativen &#8222;Total Access Memo&#8216; und &#8222;RTF2 Active Control&#8216; lernen Sie im vorliegenden Beitrag das Letztere, Kostenlose kennen. Mit ein paar Tricks ist es damit sogar m&ouml;glich, mehrseitige Dokumente mit sauberen Umbr&uuml;chen auf den Seiten eines Berichts zu verteilen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662003,66062003,44000024],"tags":[],"class_list":["post-55000135","post","type-post","status-publish","format-standard","hentry","category-662003","category-66062003","category-Berichte_und_Reporting"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Formatierte Texte in Berichten - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Formatierte Texte in Berichten\" \/>\n<meta property=\"og:description\" content=\"Eines der gr&ouml;&szlig;ten Hindernisse bei der Verschmelzung von Datenbankanwendung und Textverarbeitung ist die fehlende F&auml;higkeit von Access, formatierte Texte zu verarbeiten. Dies ist aber zum Beispiel mit RTF-Editoren m&ouml;glich, die es auch als ActiveX-Steuerelemente f&uuml;r Access gibt. Von den zwei bekanntesten Alternativen &quot;Total Access Memo&#039; und &quot;RTF2 Active Control&#039; lernen Sie im vorliegenden Beitrag das Letztere, Kostenlose kennen. Mit ein paar Tricks ist es damit sogar m&ouml;glich, mehrseitige Dokumente mit sauberen Umbr&uuml;chen auf den Seiten eines Berichts zu verteilen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:35+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/4a25ae57aec046e190ee4ff0507c29d0\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"18\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Formatierte Texte in Berichten\",\"datePublished\":\"2020-05-06T15:17:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/\"},\"wordCount\":3223,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/4a25ae57aec046e190ee4ff0507c29d0\",\"articleSection\":[\"2003\",\"6\\\/2003\",\"Berichte und Reporting\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/\",\"name\":\"Formatierte Texte in Berichten - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/4a25ae57aec046e190ee4ff0507c29d0\",\"datePublished\":\"2020-05-06T15:17:35+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/4a25ae57aec046e190ee4ff0507c29d0\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/4a25ae57aec046e190ee4ff0507c29d0\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Formatierte_Texte_in_Berichten\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Formatierte Texte in Berichten\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Formatierte Texte in Berichten - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/","og_locale":"de_DE","og_type":"article","og_title":"Formatierte Texte in Berichten","og_description":"Eines der gr&ouml;&szlig;ten Hindernisse bei der Verschmelzung von Datenbankanwendung und Textverarbeitung ist die fehlende F&auml;higkeit von Access, formatierte Texte zu verarbeiten. Dies ist aber zum Beispiel mit RTF-Editoren m&ouml;glich, die es auch als ActiveX-Steuerelemente f&uuml;r Access gibt. Von den zwei bekanntesten Alternativen \"Total Access Memo' und \"RTF2 Active Control' lernen Sie im vorliegenden Beitrag das Letztere, Kostenlose kennen. Mit ein paar Tricks ist es damit sogar m&ouml;glich, mehrseitige Dokumente mit sauberen Umbr&uuml;chen auf den Seiten eines Berichts zu verteilen.","og_url":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:35+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/4a25ae57aec046e190ee4ff0507c29d0","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"18\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Formatierte Texte in Berichten","datePublished":"2020-05-06T15:17:35+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/"},"wordCount":3223,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/4a25ae57aec046e190ee4ff0507c29d0","articleSection":["2003","6\/2003","Berichte und Reporting"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/","url":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/","name":"Formatierte Texte in Berichten - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/4a25ae57aec046e190ee4ff0507c29d0","datePublished":"2020-05-06T15:17:35+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/4a25ae57aec046e190ee4ff0507c29d0","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/4a25ae57aec046e190ee4ff0507c29d0"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Formatierte_Texte_in_Berichten\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Formatierte Texte in Berichten"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000135","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000135"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000135\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000135"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000135"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000135"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}