In der einen oder anderen Applikation ist es erforderlich dynamische Texte bzw. Serienbriefe zu erstellen. Um die erforderlichen Daten nicht extra mühsam von Hand eintippen zu müssen, bietet CONZEPT 16 die Möglichkeit Inhalte von Datenbankfeldern und Text zu mischen. Im folgenden Artikel möchte ich etwas näher auf diese Thematik eingehen.
Text mit Datensätzen verbinden
Ein bereits bestehender Text oder auch RTF-Text kann mit dem Inhalt von globalen Variablen bzw. Datensatzpuffern verbunden werden. Um dies zu bewerkstelligen ist es notwendig Platzhalter im Text einzufügen. Die Platzhalter werden dabei in ein Markierungszeichen geklammert, um sie vom normalen Text unterscheiden zu können.
Standartmäßig wird die Tilde "~" als Markierungszeichen verwendet. Das Zeichen kann aber im Applikationsobjekt in der Eigenschaft wpRtfMixMarker
für RtfEdit-Objekte und in Eigenschaft wpDocMixMarker
für CtxDocEdit-Objekte auf ein beliebiges anderes Zeichen geändert werden.
Zeitpunkt wählen
Es besteht die Möglichkeit das Mischen des Textes mit den Daten zu verschiedenen Zeitpunkten zu verwirklichen.
- Beim Lesen eines Textes in ein
RtfEdit
-ObjektDazu muss bei den Befehlen (z.B.
WinRtfLoad()
) die Option_WinRtfLoadMix
angegeben werden. - Beim Speichern eines Textes aus einem
RtfEdit
-ObjektDazu muss bei den Befehlen (z.B.
WinRtfSave()
) die Option_WinRtfSaveMix
angegeben werden. - Beim Lesen eines Textes in ein
CtxDocEdit
-ObjektDazu muss bei den Befehlen (z.B.
WinDocLoadName()
) die Option_WinDocLoadMix
angegeben werden. - Beim Speichern eines Textes aus einem
CtxDocEdit
-ObjektDazu muss bei den Befehlen (z.B.
WinDocSaveName()
) die Option_WinDocSaveMix
angegeben werden. - Beim Drucken eines Textes mit dem
PrtRtf
-ObjektIst beim Drucken des Objektes in der Eigenschaft
ppPrtRtfFlags
die Ausprägung_PrtRtfMix
gesetzt, werden die Markierungen durch die entsprechenden Inhalte ersetzt.
Markierungen
Sollen Datenbankfeld-Inhalte dargestellt werden, besitzt die Markierung folgendes Aussehen: ~F:<Feldname>~
Als <Feldname> wird der Name eines Feldes aus der Datenstruktur oder die Nummer der Datei, des Teildatensatzes und des Feldes durch Kommata getrennt verwendet. Dieser Platzhalter wird nun durch den Inhalt des angegebenen Feldes ersetzt. Das Ausgabeformat wird durch die Ländereinstellungen des Betriebssystems bestimmt. Je nach Typ des Feldes können noch folgende Formatoptionen angegeben werden.
Feldtyp | Option | Beschreibung |
Alphanumerisch (alpha) | /W1 | Erste Wortumstellung: Hier wird der Name in der Form Titel, Vorname und Name dargestellt. |
/W2 | Zweite Wortumstellung: In dieser Wortumstellung wird der Vorname ausgelassen. | |
/W3 | Dritte Wortumstellung: Hier werden keine Doppelnamen angezeigt. | |
/Bn | Ist das Feld nicht leer, werden nach der Ausgabe des Inhalts noch die in n angegebenen Leerzeichen ausgegeben. | |
/Sn | Das Feld wird mit einer statischen Ausgabelänge ausgegeben. Unabhängig vom Inhalt des Feldes werden die in n angegebenen Zeichen ausgegeben. | |
Ganzzahlig (byte, word, int und bigint) | /G | Es findet keine Tausender-Trennung statt. |
/Z | Ist der darzustellende Wert gleich 0, wird keine Ausgabe gemacht (Nullunterdrückung). | |
Gleitkomma (float und decimal) | /G | Es findet keine Tausender-Trennung statt |
/Z | Ist der darzustellende Wert gleich 0, wird keine Ausgabe gemacht (Nullunterdrückung). | |
/P | Anstelle des Dezimaltrennzeichens wird ein Punkt ausgegeben. | |
/n | Über diese Option wird die Anzahl der Nachkommastellen definiert. | |
Datum (date) | /L | Mit dieser Option wird das lange Datumsformat eingestellt. |
Zeit (time) | /S | Die Uhrzeit wird mit Sekunden angezeigt. |
/H | Die Uhrzeit wird mit Sekunden und hundertstel Sekunden angezeigt. | |
Logisch (logic) | /<true>/<false> | Logische Felder und Variablen müssen mit Werten versehen werden, die in Abhängigkeit des Wertes angezeigt werden sollen. |
Sollen hingegen Variablen dargestellt werden, besitzt die Markierung folgendes Aussehen: ~G:<Variablenbereich>:<Variablenname>~
Für Variablen gelten die gleichen Formatierungsmöglichkeiten, wie für Felder.
Es können mehrere Optionen hinter einem "/" gesammelt werden. Bei Zahlenwerten können die Formatierungsanweisungen kombiniert werden.
Damit die Platzhalter korrekt ersetzt werden können, müssen die Namen korrekt geschrieben sein und es darf kein Formatwechsel zwischen den Markierungszeichen vorgenommen werden. Markierungen, welche nicht ersetzt werden können, bleiben im Text enthalten.
Eine Antwort
Haben wir "zu Fuß" gelöst, da
– keine bedingte Ausgabe möglich ist (Feld A, wenn Feld B=’X‘)
– Werte erst durch eine Prozedur ermittelt werden müssen
– die Feldnamen vom Endanwender nicht immer verstanden werden (und er auch nicht weiß, welche Dateien an dieser Stelle überhaupt korrekt eingelesen sind)