Writer - Variabler Text mit Base Daten

Hallo,

ich habe ein Base file Source.odb mit Tabelle Main. In der Tabelle sind unter anderem die Variablen
Kind 1 Vorname , Kind 2 VornameKind 6 Vorname .

In einem Writer-Dokument möchte ich einen Satz wie “Der Termin mit <Kind 1 Vorname> und <Kind 2 Vorname> findet am 1. Januar statt” haben. Je nach Anzahl der eingetragenen Vornamen in der Datenbank soll der Satz variabel gestaltet sein, bei einem Kind "... mit <Kind 1 Vorname> findet ... ", bei drei Kindern "... mit <Kind 1 Vorname>, <Kind 2 Vorname> und <Kind 3 Vorname> findet ... " usw.

Ich bekomme das mit hidden sections hin, allerdings gibt es da einige Probleme - die Sections werden in der Ansicht bevor ich Drucke alle eingeblendet, was das Dokument auf zwei Seiten vergrößert. Beim Druck entsteht nur eine Seite, da ja fünf der sechs Sections ausgeblendet werden, das Feld für den page count sagt dann aber Seite 1 von 2. Außerdem habe ich in den Sections noch Variablen, die ich manuell mit einem Dropdown definiere.

Was ist der beste Weg, um einen Variablen Input so hinzubekommen? Ich habe es mit Queries versucht, aber da habe ich Probleme mit dem variablen Platzieren von Kommata und “und” je nach Anzahl der Namen.

Ich würde den Weg über die Datenbank gehen. Alles, was Du dort erledigen kannst, das stört den Seitenaufbau des Writers nicht mehr groß.

Mit SELECT "Kind 1 Vorname"||', '||"Kind 2 Vorname" FROM "Tabelle" kannst Du Felder zusammenfassen. Bei leeren Feldern würde das Ergebnis allerdings leer bleiben. Das könnte jetzt, ungetestet, genutzt werden:
SELECT COALESCE("Kind 1 Vorname"||', '||"Kind 2 Vorname"||' und '||"Kind 3 Vorname", "Kind 1 Vorname"||' und '||"Kind 2 Vorname", "Kind 1 Vorname") AS "Kinder" FROM "Tabelle"
COALESCE gibt immer den ersten Ausdruck wieder, der nicht NULL ist. Ich gehe dabei davon aus, dass wirklich die Kinder hintereinander aufgeführt sind, und nicht 2 fehlt, 3 aber da ist.

Ansonsten stände noch die Möglichkeit mit CASE WHEN zur Verfügung. Eine Zusammensetzung des Strings insgesamt und dann einfach ein Ersetzen des letzten Kommas durch ‘und’ ist leider ein Problem, da die Suchfunktionen der internen Datenbank meines Wissens nur von vorne nach hinten laufen, ich also nicht von hinten aus das letzte Komma suchen kann. Deswegen diese Lösung mit COALESCE.

Vielen Dank! Leider ist das mit dem Komma und “und” insofern wichtig, als dass ein manuelles Einsetzen im Nachhinein dann den Sinn der Übung etwas verfehlt. Bis ich dafür eine elegante Lösung gefunden habe, arbeite ich vorerst mal mit versteckem Text und schreibe für jede Anzahl an Kindern einen Abschnitt. Die Variable Anzahl Kinder steuert dann, welcher Abschnitt gezeigt wird.

Aber genau das macht doch das Beispiel: Es setzt ein Komma zwischen alle Kindernamen. Nur der letzte Trenner wird ein ‘und’. Du brauchst nur eine Abfrage entsprechender Art machen und hast das Ganze zusammen in der Variablen “Kinder” stehen.

Danke, der Output ist genau so, wie er sein sollte!
Ein Problem noch: Wenn ich das Query als Field im Writer einfüge, wird das Field sofort mit den Einträgen aus der Datenbank gefüllt. Konkret: Ich habe zwei Einträge in der Datenbank, Familie Müller und Familie Maier. Die Müllers haben nur ein Kind, Peter, während die Maiers drei Kinder, Tick, Trick und Track haben.

Sobald ich das Field nun einfüge, ist der Output

Peter
Tick, Trick und Track

Wie bekomme ich es hin, zunächst nur im Writer zu haben und das Feld erst zu füllen, wenn ich Mail Merge nutze? Und dann eben auch nur mit der einen im Mail Merge ausgewählten Familie?

Aber die Funktion ist super, wieder was gelernt, danke!!

Hat das denn nichts mit der Anzeige der Feldnamen (statt des Inhaltes) zu tun? Du hast doch die Abfrage als Grundlage Deines Serienbriefes. So, wie ich das aus dem Base-Handbuch kenne, klicke ich mit der Maus auf den Tabellenkopf “Kinder” und ziehe von dort (gedrückte linke Maustaste) in das Dokument. Dann steht dort . Drucke ich das, dann wird dort der Serienbriefinhalt gedruckt. Aber genau das müsstest Du ja schon gemacht haben …

Besser spät als nie… ich habe es nun mal wieder versucht, nachdem ich länger keine Zeit und es dann vergessen hatte. Es ist jetzt so: wenn ich aus der Datenbanktabelle eine Spalte am Spaltenkopf in das Dokument ziehe, wie du es beschrieben hast, dann funktioniert es problemlos wie es sollte. Wenn ich das Query am Spaltenkopf in das Dokument ziehe, habe ich zunächst ein Feld , aber das wird beim Mail Merge dann nicht ausgefüllt, es kommt einfach nichts (es wird auch nicht mehr der Feldnamen angezeigt, sondern einfach gar nichts)

Du musst nicht die ganze Abfrage in Dein Dokument ziehen. Du siehst doch auch bei einer Abfrage, wenn Du sie öffnest, die entsprechenden Felder - oder?