Serienbrief mit Sonderlocken

Hallo,
gerade arbeite ich an einem Serienbrief, der aus einfachen Einträgen in
der Datenbank (eigentlich eine einfache Tabelle) ausführlicheren Text in
einer Liste machen soll, etwa so:

Nr. Name Ersatzrad Steuerrad Fenster
1 Auto 1 1 1
2 Quad 0 1 0

Daraus soll dann im Serienbrief folgende Liste erstellt werden:

für Nr. 1:

Die Ausstattung des Fahrzeugs ist wie folgt:
Das Auto verfügt über ein Ersatzrad.
Das Auto besitzt ein Steuerrad.
Das Auto hat Fenster.
Diese Aufzählung ist vollständig.

für Nr. 2:

Die Ausstattung des Fahrzeugs ist wie folgt:
Das Quad besitzt ein Steuerrad.
Diese Aufzählung ist vollständig.

Und das am liebsten als Liste ohne Leerzeilen oder Lücken. Wie stelle
ich das an?

Spontan denke ich da an eine WENN-Funktion. Ggf. kannst Du Deine
Datenbanktabelle auch um eine zusätzliche Spalte erweitern, in welcher Du
bspw. Deine kurzen Sätze oder einen Teil davon ablegst. Dann kannst Du selbige
leichter als eine Arte Textbaustein passend zur Ausstattung des Fahrzeugs
einfügen.

- --

MfG Richi

Hallo Boris,

ich habe mal eine Tabellenkalkulation gebaut, die dir die Textbausteine
liefert. Musst nur noch den Serienbrief dazu erstellen und die Zeile 1 bis
Zeile 5 verknüpfen. Bei mir hat es funktioniert.
Hier die Datei:
https://send.firefox.com/download/c85f0cd4aff3a61e/#3bYevskszyvvuzBSOZMpWA
mfg
Jürgen

Hallo,

Spontan denke ich da an eine WENN-Funktion. Ggf. kannst Du Deine
Datenbanktabelle auch um eine zusätzliche Spalte erweitern, in welcher Du
bspw. Deine kurzen Sätze oder einen Teil davon ablegst. Dann kannst Du selbige
leichter als eine Arte Textbaustein passend zur Ausstattung des Fahrzeugs
einfügen.

das wollte ich eigentlich vermeiden, da diese Tabelle noch anderweitig
verwendet wird und nicht unnötig aufgebläht werden soll. Kann man so
eine WENN-Funktion vielleicht auch in Writer einbauen, so nach der Art
"=WENN(<Ersatzrad>=1;"Das "<Name>" verfügt über ein Ersatzrad";""), oder
geht das nicht?

Hallo Boris,

Hallo,

Spontan denke ich da an eine WENN-Funktion. Ggf. kannst Du
Deine Datenbanktabelle auch um eine zusätzliche Spalte
erweitern, in welcher Du bspw. Deine kurzen Sätze oder einen
Teil davon ablegst. Dann kannst Du selbige leichter als eine
Arte Textbaustein passend zur Ausstattung des Fahrzeugs
einfügen.

das wollte ich eigentlich vermeiden, da diese Tabelle noch
anderweitig verwendet wird und nicht unnötig aufgebläht werden
soll. Kann man so eine WENN-Funktion vielleicht auch in Writer
einbauen, so nach der Art "=WENN(<Ersatzrad>=1;"Das "<Name>"
verfügt über ein Ersatzrad";""), oder geht das nicht?

Ja, natürlich geht das, genau so, über bedingte Felder.

Schau dir mal

http://www.ooowiki.de/BedingterText.html

und

https://wiki.openoffice.org/wiki/DE/Dokumentation/OOo_2.x/Handbücher/Writer-Handbuch/Bedingten_Inhalt_entwickeln

an.

Wolfgang

Das mit der zusätzlichen Spalte war lediglich ein Vorschlag. Es funktioniert
selbstverständlich auch ohne diese weitere Spalte. Dann wird aber die WENN-
Funktion etwas länger, weil mehr Text in der Funktion steht.

- --

MfG Richi

Hallo,

Kann man so eine WENN-Funktion vielleicht auch in Writer
einbauen, so nach der Art "=WENN(<Ersatzrad>=1;"Das "<Name>"
verfügt über ein Ersatzrad";""), oder geht das nicht?

Ja, natürlich geht das, genau so, über bedingte Felder.

"genau so" ist wohl nicht ganz so genau, jedenfalls wollte es mir nicht
glücken. Per Suchmaschine bin ich dann auf versteckten Text und
bedingten Text gestoßen, doch da finde ich nur die Erwähnung, dass es
geht, aber nicht wie. Ein Beispiel wäre nett gewesen, habe ich aber
nicht hinreichend konkret gefunden. Folgendes habe ich probiert:

Einfügen → Feldbefehl → weitere Feldbefehle
→ Funktionen → Bedingter Text:
Bedingung: Fahrzeugliste.Typen.Ersatzrad == 1
Dann: verfügt über ein Ersatzrad
Sonst: stehen lassen!

Ergebnis: egal, was im Feld "Ersatzrad" steht, wird immer der Dann-Text
angezogen. Irgendwie ist es nicht ganz das, was ich erzielen möchte -was
mache ich falsch, wie geht es richtig?

Hallo,

Schau dir mal

http://www.ooowiki.de/BedingterText.html

und

https://wiki.openoffice.org/wiki/DE/Dokumentation/OOo_2.x/Handbücher/Writer-Handbuch/Bedingten_Inhalt_entwickeln

an.

das habe ich, komme damit allerdings nicht weiter. In den Beispielen
(die ich übrigens auch an anderen Stellen praktisch wortgleich gefunden
habe) wird eine Variable gesetzt, die offenbar manuell geändert werden
muss, wenn der bedingte Text sich ändern soll. Eine mögliche
Abhängigkeit von einem Datenbankfeld wird zwar erwähnt, aber nicht
konkret gezeigt, und so gelingt es mir bisher nicht, aus einem Feldwert
1 den Text "verfügt über ein Ersatzrad" zu generieren. Entweder steht es
immer drin oder nie -egal, welchen Wert das Feld jeweils trägt.

Ich argwöhne im ersten Anlauf ja einen Syntaxfehler oder so, aber von
den Varianten
Ersatzrad==1
Ersatzrad=="1"
Ersatzrad == 1
Ersatzrad == "1"
<Ersatzrad>==1
<Ersatzrad>=="1"
<Ersatzrad> == 1
<Ersatzrad> == "1"
funktioniert keine.

Hallo Boris,

Hallo,

Kann man so eine WENN-Funktion vielleicht auch in Writer
einbauen, so nach der Art "=WENN(<Ersatzrad>=1;"Das "<Name>"
verfügt über ein Ersatzrad";""), oder geht das nicht?

Ja, natürlich geht das, genau so, über bedingte Felder.

"genau so" ist wohl nicht ganz so genau, jedenfalls wollte es
mir nicht glücken.

Na ja, im Prinzip ... :wink:

Per Suchmaschine bin ich dann auf versteckten Text und bedingten
Text gestoßen, doch da finde ich nur die Erwähnung, dass es geht,
aber nicht wie. Ein Beispiel wäre nett gewesen, habe ich aber
nicht hinreichend konkret gefunden. Folgendes habe ich probiert:

Einfügen → Feldbefehl → weitere Feldbefehle → Funktionen →
Bedingter Text: Bedingung: Fahrzeugliste.Typen.Ersatzrad == 1
Dann: verfügt über ein Ersatzrad Sonst: stehen lassen!

Ergebnis: egal, was im Feld "Ersatzrad" steht, wird immer der
Dann-Text angezogen. Irgendwie ist es nicht ganz das, was ich
erzielen möchte -was mache ich falsch, wie geht es richtig?

Also hier funktioniert folgendes ... aber auch noch diverses andere:

https://fraschi.lima-city.de/index.php/s/F5w6WXLBe4EZTSL

Da ich nicht weiß, wie ich die Felder als reinen Text (ohne dass sie
gleich - schon in der Zwischenablage - mit Datenbankinhalten gefüllt
werden) kopieren kann, leider nur als Screenshot-Bild. Ich hoffe Du
kannst trotzdem was damit anfangen.

Hallo Boris,

Hallo,

Kann man so eine WENN-Funktion vielleicht auch in Writer
einbauen, so nach der Art "=WENN(<Ersatzrad>=1;"Das "<Name>"
verfügt über ein Ersatzrad";""), oder geht das nicht?

Ja, natürlich geht das, genau so, über bedingte Felder.

"genau so" ist wohl nicht ganz so genau, jedenfalls wollte es
mir nicht glücken.

Na ja, im Prinzip ... :wink:

Per Suchmaschine bin ich dann auf versteckten Text und bedingten
Text gestoßen, doch da finde ich nur die Erwähnung, dass es geht,
aber nicht wie. Ein Beispiel wäre nett gewesen, habe ich aber
nicht hinreichend konkret gefunden. Folgendes habe ich probiert:

Einfügen → Feldbefehl → weitere Feldbefehle → Funktionen →
Bedingter Text: Bedingung: Fahrzeugliste.Typen.Ersatzrad == 1
Dann: verfügt über ein Ersatzrad Sonst: stehen lassen!

Ergebnis: egal, was im Feld "Ersatzrad" steht, wird immer der
Dann-Text angezogen. Irgendwie ist es nicht ganz das, was ich
erzielen möchte -was mache ich falsch, wie geht es richtig?

Also hier funktioniert folgendes ... aber auch noch diverses andere:

https://fraschi.lima-city.de/index.php/s/F5w6WXLBe4EZTSL

Da ich nicht weiß, wie ich die Felder als reinen Text (ohne dass sie
gleich - schon in der Zwischenablage - mit Datenbankinhalten gefüllt
werden) kopieren kann, leider nur als Screenshot-Bild. Ich hoffe Du
kannst trotzdem was damit anfangen.

Hallo Boris,

ich würde dir empfehlen die Funktion versteckter Absatz beim Writer zu verwenden.

Im Vorfeld deine Calc Tabelle bei den Datenbanken veröffentlichen. {Bearbeiten} {Datenbanken austauschen} {Durchsuchen}.

Du musst mit Strg+F2 im Fenster Feldbefehle unter dem Reiter Funktionen den Typ versteckter Absatz wählen. Dann bei Bedingung "Ersatzrad==0" eingeben. Bitte ohne Anführungszeichen. Dann auf Einfügen klicken. Jetzt kannst du einfach den Absatz eintippen. Also zum Beispiel: Das ... verfügt über ein Ersatzrad. Bei den Punkten musst du jetzt noch das Datenbankfeld der Fahrzeugbezeichnung eingeben.

Mit den anderen Absätzen verfährst du wie oben adäquat.

Jetzt musst du gegebenenfalls noch unter {Extras} {Optionen} {LibreOffice Writer} {Ansicht} Felder anzeigen} den Haken bei {verborgene Absätze} deaktivieren.

Ich hoffe weiter geholfen zu haben. Bei weiteren Fragen einfach nochmal schreiben.

lg

Jürgen

Hallo,

Hallo Boris,

ich würde dir empfehlen die Funktion versteckter Absatz beim Writer zu
verwenden.

Im Vorfeld deine Calc Tabelle bei den Datenbanken veröffentlichen.
{Bearbeiten} {Datenbanken austauschen} {Durchsuchen}.

Du musst mit Strg+F2 im Fenster Feldbefehle unter dem Reiter Funktionen
den Typ versteckter Absatz wählen. Dann bei Bedingung "Ersatzrad==0"
eingeben. Bitte ohne Anführungszeichen. Dann auf Einfügen klicken. Jetzt
kannst du einfach den Absatz eintippen. Also zum Beispiel: Das ...
verfügt über ein Ersatzrad. Bei den Punkten musst du jetzt noch das
Datenbankfeld der Fahrzeugbezeichnung eingeben.

Mit den anderen Absätzen verfährst du wie oben adäquat.

Jetzt musst du gegebenenfalls noch unter {Extras} {Optionen}
{LibreOffice Writer} {Ansicht} Felder anzeigen} den Haken bei
{verborgene Absätze} deaktivieren.

Ich hoffe weiter geholfen zu haben. Bei weiteren Fragen einfach nochmal
schreiben.

Danke für die ausführliche Anleitung, die ich genauestens befolgt habe.
Leider funktioniert das mit dem versteckten Absatz hier nicht, der ist
immer da, nie versteckt. Also habe ich es mit verstecktem Text versucht,
und bei den ersten vier oder fünf Briefen funktionierte es auch (der
Absatz war dann zwar da, aber ohne Text), doch danach (also so ab Brief
Nr. 5) war es wieder trotz Feldwert 0 wieder da. Verstehen tue ich das
nicht so richtig...

Hallo Boris,

Hallo,

Kann man so eine WENN-Funktion vielleicht auch in Writer
einbauen, so nach der Art "=WENN(<Ersatzrad>=1;"Das "<Name>"
verfügt über ein Ersatzrad";""), oder geht das nicht?

Ja, natürlich geht das, genau so, über bedingte Felder.

"genau so" ist wohl nicht ganz so genau, jedenfalls wollte es
mir nicht glücken.

Na ja, im Prinzip ... :wink:

Per Suchmaschine bin ich dann auf versteckten Text und bedingten
Text gestoßen, doch da finde ich nur die Erwähnung, dass es geht,
aber nicht wie. Ein Beispiel wäre nett gewesen, habe ich aber
nicht hinreichend konkret gefunden. Folgendes habe ich probiert:

Einfügen → Feldbefehl → weitere Feldbefehle → Funktionen →
Bedingter Text: Bedingung: Fahrzeugliste.Typen.Ersatzrad == 1
Dann: verfügt über ein Ersatzrad Sonst: stehen lassen!

Ergebnis: egal, was im Feld "Ersatzrad" steht, wird immer der
Dann-Text angezogen. Irgendwie ist es nicht ganz das, was ich
erzielen möchte -was mache ich falsch, wie geht es richtig?

Also hier funktioniert folgendes ... aber auch noch diverses andere:

https://fraschi.lima-city.de/index.php/s/F5w6WXLBe4EZTSL

Da ich nicht weiß, wie ich die Felder als reinen Text (ohne dass sie
gleich - schon in der Zwischenablage - mit Datenbankinhalten gefüllt
werden) kopieren kann, leider nur als Screenshot-Bild. Ich hoffe Du
kannst trotzdem was damit anfangen.

Erläuterung dazu:
Schreibe den Inhalt des Feldes 'Vorname1' und nur, wenn das Feld
'Vorname1' nicht leer ist, dann füge noch ein Blank ein, bevor
anschließend der Inhalt des Feldes 'Name1' geschrieben wird. Damit
wird erreicht, dass bei fehlendem Vorname der Nachname direkt bündig
und nicht erst nach einem dann völlig unnötigen Leerzeichen
geschrieben wird.
Wenn das Feld 'Name2' nicht leer ist, dann ergänze noch
' und Herr ' sowie den Inhalt der Felder 'Vorname2' und 'Name2'.
Dabei brauche ich beim Vorname2 die Wenn-Abfrage wie beim Vorname1
nicht mehr, da alle Vorname2 gefüllt sind. Außerdem ist es bei zwei
Personen generell so, dass als Person1 die weibliche und als Person2
die männliche Person eingegeben ist, daher kann der Text fest ' und
Herr ' lauten .... sonst müsste hier natürlich auch noch eine
Geschlechter-Abfrage erfolgen.

Hallo und Danke,

Also hier funktioniert folgendes ... aber auch noch diverses andere:

https://fraschi.lima-city.de/index.php/s/F5w6WXLBe4EZTSL

Da ich nicht weiß, wie ich die Felder als reinen Text (ohne dass sie
gleich - schon in der Zwischenablage - mit Datenbankinhalten gefüllt
werden) kopieren kann, leider nur als Screenshot-Bild. Ich hoffe Du
kannst trotzdem was damit anfangen.

ehrlich gesagt: nicht so richtig.
Was hat es mit den eckigen Klammern auf sich?

Hallo Boris,

Hallo und Danke,

Also hier funktioniert folgendes ... aber auch noch diverses
andere:

https://fraschi.lima-city.de/index.php/s/F5w6WXLBe4EZTSL

Da ich nicht weiß, wie ich die Felder als reinen Text (ohne
dass sie gleich - schon in der Zwischenablage - mit
Datenbankinhalten gefüllt werden) kopieren kann, leider nur als
Screenshot-Bild. Ich hoffe Du kannst trotzdem was damit
anfangen.

ehrlich gesagt: nicht so richtig. Was hat es mit den eckigen
Klammern auf sich?

In denen steht der Feldname, dessen Inhalt für die Bedingungsprüfung
herangezogen wird.

Hallo,
mittlerweile habe ich eine getestet funktionieren sollende Datei-Kombi
(.odt + .ods) mit meinen Beispieldaten erhalten, die bei mir "natürlich"
wieder nicht funktioniert hat. Folgende Probleme:

1.: vor jedem Druck muss ich die Datenbank (.ods.Datei) via Datenbank
austauschen neu auswählen. Beim nächsten Druck(-versuch) erscheint ein
Popup, das mich auffordert, die Verbindungseinstellungen zur Datenquelle
zu prüfen; eine passende .odb-Datei finde ich jedoch nicht, also s.o.

2.: beim Serienbriefdruck über alle Datensätze wird nur der erste
Serienbrief gedruckt, der zweite fehlt schlicht.

3. Wenn ich explizit beide Datensätze auswähle, bleibt es dabei, dass
nur der erste gedruckt wird.

4. Wähle ich explizit nur den zweiten Datensatz aus, werden trotzdem
alle Absätze gedruckt.

In der Folge habe ich erst einmal alle DB-Verbindungen gelöscht -ohne
Änderung.
Da ich nun argwöhnte, dass bei mir irgendetwas kaputtgegangen sein
könnte, habe ich als ein Update von Version 6.4.0.1 auf 6.4.1.1 gemacht
und das Verzeichnis /home/boris/.config/libreoffice umbenannt (AKA
"vorsichtig gelöscht") -ohne Änderung, weder bei meinem produktiven noch
dem zugesandten Beispieldokument.

Was kann das nur sein?

Hallo,
mittlerweile habe ich es mittels der eckigen Klammern geschafft, dass
der versteckte Text funktioniert. Das ist schon mal gut, aber nicht
schön, weil es unordentlich wirkende Lücken durch leere Absätze gibt.

Leider funktioniert die exakt selbe Bedingung (mit C&P übernommen) bei
versteckten Absätzen nicht. Merkwürdigerweise verschwinden manche dieser
so markierten Absätze komplett aus der Ansicht und erscheinen erst
wieder, wenn ich Ansicht → Feldbefehle aktiviere. Davon, und leider auch
von den Feldinhalten unabhängig erscheinen diese Absätze immer im
Seriendruck. Zwar habe ich gelesen, dass es egal sei, an welcher Stelle
im Absatz dieser Feldbefehl steht, dennoch habe ich mit verschiedenen
Stellen experimentiert -ohne Erfolg.

Zusammengefasst: dasselbe Dokument, dieselbe Bedingung:
Erfolg bei verstecktem Text.
Misserfolg bei verstecktem Absatz.

Was kann das nur sein?

Diese Frage stellt sich erneut.

Das sollte eigentlich funktionieren; Da musst du irgend einen Fehler
gemacht haben. Schau dir mal

https://send.firefox.com/download/235e3c265b0bd9d8/#Em2zloiOxbsSn3VRdKlbhw

an (ist ne ZIP-Datei, die .odt als Serienbrief und .ods als Datenquelle
enthält). Darin sind 2 bedingte Texte (Anrede und Schaltjahr; eine Frau
zum Testen findest du u.a. so ungefähr als vierte von unten oder so).
Bei mir funktioniert das problemlos. Btw., mit "Ansicht => [X] Feldnamen"
kannst du die Bedingungen usw. auch direkt anzeigen lassen.

Wolfgang

Hallo,
nachdem es mit verstecktem Text (und nur mit diesem, nicht mit
versteckten Absätzen und auch nicht mit bedingtem Test) funktioniert,
wenn ich den vollen Namen des Feldes (also mit Datenbank, Tabelle und
Feld, mit Punkten getrennt) in eckigen Klammern angebe, wollte ich
weitere Funktionen einbinden. Eine Bedingung mit einem Datum habe ich
hinbekommen, indem ich das Datum als Dezimalzahl angebe, bspw.
[Fahrzeugliste.Typen.EZ]<=43466

Jetzt wollte ich in dem versteckten noch ein Feld unterbringen, so dass
bei Fahrzeugen mit einer EZ vor 2019 der nächste Prüftermin angegeben
wird, etwa:
Das Fahrzeug muss spätestens am <Prueftermin> zum TÜV.

Dazu habe ich diesen Satz hingeschrieben, mit <Prueftermin> als
Serienbrieffeld aus derselben Datenbank, dann über
Einfügen → Feldbefehl → weitere Feldbefehle... → Versteckter Text
mit obiger Bedingung, dann [Einfügen] und [Schließen]. Beim
Serienbriefdruck erscheint dann aber nicht wie erwartet
Das Fahrzeug muss spätestens am 31.03.2020 zum TÜV.
sondern
Das Fahrzeug muss spätestens am <Prueftermin> zum TÜV.
Also mit dem Feld ausgeschrieben statt mit dem betreffenden Inhalt gefüllt.

Wie geht es richtig -oder geht das gar nicht?