❤️ Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! ❤️
Unterstützen Sie das LibreOffice-Forum und helfen Sie uns, unser Ziel für 2025 zu erreichen!

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱


❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[Gelöst] Problem mit bedingtem Text aufgrund von Feldinhalten

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
DrMartinus
Beiträge: 41
Registriert: So 10. Jul 2011, 06:35

[Gelöst] Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von DrMartinus » Do 22. Dez 2016, 11:14

Hallo,

ich habe folgendes Problem:

Bedingung: DBName.Abfrage_DBName_DBName_DBName.Ehename_Frau != DBName.Abfrage_DBName_DBName_DBName.Ehename_Mann
Dann: Frau <DBName.Abfrage_DBName_DBName_DBName.Ehename_Frau>' und Herrn ' <DBName.Abfrage_DBName_DBName_DBName.Ehename_Mann>
Sonst: 'Ehepaar ' <DBName.Abfrage_DBName_DBName_DBName.Ehename_Frau>

Es wird nichts ausgegeben. Ich habe in der Bedingung auch versucht:
<DBName.Abfrage_DBName_DBName_DBName.Ehename_Frau> != <DBName.Abfrage_DBName_DBName_DBName.Ehename_Mann>

Das hat aber nichts verändert. Hat jemand einen Tip? Die Hilfestellungen im WWW helfen mir leider nicht weiter, da sie das Eigentliche (z.B. wie man die Feldverweise formatiert) nicht enthalten.
Zuletzt geändert von DrMartinus am Sa 31. Dez 2016, 09:40, insgesamt 1-mal geändert.

DrMartinus
Beiträge: 41
Registriert: So 10. Jul 2011, 06:35

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von DrMartinus » Do 22. Dez 2016, 13:17

Alles vor längerer Zeit schon mal durchexerziert. Wenn ich doppelte Anführungszeichen verwende, kommt folgendes raus:

"Ehepaar " [DBName.Abfrage_DBName_DBName_DBName.Ehename_Frau]

und zwar genauso in der Endausgabe wie oben wiedergegeben (DBName ist natürlich der richtige Name der Datenbank).

Wenn ich versteckte Absätze benutze, müsste ich ja zwei solcher Absätze hintereinander haben, den einen für den einen Fall und den anderen für den andern, klar. Da werden mir dann aber nur 2 oder 3 von 8 Datensätzen ausgegeben, nach einem völlig unerklärlichen Prinzip (sind aber immer die selben).

Zwei einfache Hochkommas hintereinander (dann also doppelt) zeitigen übrigens das gleiche Ergebnis wie in meinem ersten Post wiedergegeben: gar nichts.

DrMartinus
Beiträge: 41
Registriert: So 10. Jul 2011, 06:35

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von DrMartinus » Fr 23. Dez 2016, 11:34

nikki hat geschrieben: Neben normaler Texteingabe, können Sie in den Ergebnisfeldern Dann und Sonst auch Datenbankfelder in der Form "Datenbankname.Tabellenname.Feldname" (ohne Anführungszeichen) angeben, um die Feldinhalte in Abhängigkeit von der Bedingung einzufügen. LibreOffice versucht bei solchen Ausdrücken zunächst, den Text als Datenbankspalte zu identifizieren. Wenn diese existiert, wird der Inhalt der Spalte, ansonsten einfach der Text ausgegeben.
Ich verstehe das so, dass sowohl normale Texteingabe als auch Datenbankfelder, ggfs. zusammen, ausgegeben werden können. Es wäre wohl besser, zu schreiben: "Es kann entweder normale Texteingabe oder Datenbankfelder..."
Aber Sinn macht es auch dann nicht. Normalerweise muss man ja zwischen mehreren Datenbankfeldern wenigstens eine Leerstelle oder ein Komma oder so haben. Aber es ist vermutlich müßig, über die Qualität der Programmhilfe zu sinnieren. Ich hatte den Text jedenfalls so verstanden, dass man Text und Datenbankfeld in die Felder "Dann und Sonst eintragen kann.
Das mit den versteckten Absätzen habe ich schon verstanden, es zeitigt aber, wie schon gesagt, sehr merkwürdige Ergebnisse (Ausgabe von nur einem Teil der Datensätze ohne erkennbares Ausschlusskriterium). Ich werde mal noch weiter rumtüfteln, vielleicht kommt mir ja doch nochmal die Erleuchtung. Jetzt habe ich mir händisch geholfen, da es nicht so viele Datensätze sind. Aber optimal ist das nicht, und meine Erwartungen halte ich eigentlich auch nicht für sonderlich außergewöhnlich.

DrMartinus
Beiträge: 41
Registriert: So 10. Jul 2011, 06:35

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von DrMartinus » Fr 23. Dez 2016, 16:48

Ob eindeutig, sei mal dahingestellt. Für mich schließt der besagte Satz nicht aus, dass beides da stehen kann. Denn wenn ein Text nicht als Datenfeld interpretiert werden kann, wird er eben als Text ausgegeben, und wenn er als Datenfeld interpretiert werden kann, kommt der Inhalt des Feldes rein. Es sagt mit keiner Silbe, dass nicht Text und Datenfeld nebeneinander stehen können, und es impliziert es m.E. auch nicht. Eher im Gegenteil: ich habe den Eindruck gewonnen, dass damit gesagt wird, dass LibreOffice beides drin haben kann und nach Notwendigkeit damit verfährt. Aber wie gesagt, es ist müßig, darüber zu debattieren.
Schade ist, dass es zu meinem Problem offenbar keine vernünftige Lösung gibt. Ich hätte zahlreiche Serienbriefe, in denen ich so etwas einsetzen würde, weil es ein sehr praktischer Weg ist, Serienbriefe persönlich zu gestalten. Bei großen Datenmengen (und die jetzigen Datenbestände wachsen) wird es dann unumgänglich.
Naja, irgendwelche Krücken zur Problemlösung wird es sicher geben, es dauert dann eben nur länger, sie zu finden.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von F3K Total » Sa 24. Dez 2016, 10:00

Dr. Martinus,
es ist doch überhaupt kein Problem, die Sache innerhalb der Datenbank per SQL zu lösen.
Beispiel anbei, siehe Abfrage Anrede.
Gruß R
Dateianhänge
Anrede.zip
nur entpacken
(18.24 KiB) 183-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

DrMartinus
Beiträge: 41
Registriert: So 10. Jul 2011, 06:35

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von DrMartinus » Di 27. Dez 2016, 13:14

Danke für den Hinweis. Aber die Ausgabe ist nicht das, was ich erwarte. Manchmal steht da nur "Frau", manchmal "Ehepaar", manchmal "Frau" mit dem Nachnamen...
Ich kenne mich mit SQL nicht so gut aus, verstehe auch die Abfrage nicht so ganz.

Code: Alles auswählen

SELECT CASEWHEN( "Ehename_Frau" = "Ehename_Mann", 'Ehepaar ' || "Ehename_Frau", 'Frau ' || "Ehename_Frau" || ' und Herr ' || "Ehename_Mann" ) "Anrede" FROM "Personen"
Welche Funktion haben die "||"? Ich brauche:
Wenn "Ehename_Frau" == "Ehename_Mann" -> Ehepaar "Ehename_Mann"
Wenn "Ehename_Frau" != "Ehename_Mann" -> Frau "Ehename_Frau" und Herr "Ehename_Mann"
als Ausgabe
Das bildet sich mir in der obigen SQL-Abfrage noch nicht ab. Und wie verlinke ich zu dem "Feld" Anrede im Serienbrief?

Danke für die weitere Hilfe.

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von F3K Total » Mi 28. Dez 2016, 01:28

Nabend
DrMartinus hat geschrieben:Das bildet sich mir in der obigen SQL-Abfrage noch nicht ab.
Verstehe ich nicht. Bei mir sieht das so aus:
Anrede.png
Anrede.png (26.24 KiB) 4688 mal betrachtet
Oder ist es so, dass nur ein Name, der des Ehemann, eingetragen ist? Dann braucht man nur

Code: Alles auswählen

SELECT CASEWHEN( "Ehename_Frau" = "Ehename_Mann", 'Ehepaar ' || "Ehename_Frau", 'Frau ' || "Ehename_Frau" || ' und Herr ' || "Ehename_Mann" ) "Anrede" FROM "Personen"
durch

Code: Alles auswählen

SELECT CASEWHEN( "Ehename_Frau" = "Ehename_Mann", 'Ehepaar ' || "Ehename_Mann", 'Frau ' || "Ehename_Frau" || ' und Herr ' || "Ehename_Mann" ) "Anrede" FROM "Personen"
zu ersetzen.
DrMartinus hat geschrieben:Und wie verlinke ich zu dem "Feld" Anrede im Serienbrief?
Öffne den Serienbrief, drücke F4, navigiere zur Abfrage Anrede, ziehe den Spaltenkopf der Spalte Anrede an die Stelle im Serienbrief, wo sie gebraucht wird.
HTH R
Dateianhänge
Anrede.zip
jetzt ohne Makro, hatte ich in der vorigen Version vergessen zu löschen
(14.21 KiB) 176-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

DrMartinus
Beiträge: 41
Registriert: So 10. Jul 2011, 06:35

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von DrMartinus » Mi 28. Dez 2016, 12:41

Sorry, peinlicher Fehler. In der Ausgabe war die Spalte nicht breit genug. Das sah ich aber nicht, weil, wenn Wörter nicht ganz in die Zeile reinpassen, sie offenbar ganz weggelassen werden. Das würde ich als einen Darstellungsfehler bei LibreOffice bezeichnen, aber naja. Das Ergebnis ist jedenfalls richtig. Nur wüsste ich natürlich schon gerne, wie ich diese SQL-Formel richtig verstehe, damit ich evtl. Anpassungen vornehmen kann.

Aber danke schonmal für diese Hilfe!

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von F3K Total » Mi 28. Dez 2016, 16:04

Ich versuche es:

Code: Alles auswählen

SELECT CASEWHEN( "Ehename_Frau" = "Ehename_Mann", 'Ehepaar ' || "Ehename_Mann", 'Frau ' || "Ehename_Frau" || ' und Herr ' || "Ehename_Mann" ) "Anrede" FROM "Personen"
Eigentlich genau wie WENN (Bedingung, dann, sonst) in Calc
also
WENN

Code: Alles auswählen

"Ehename_Frau" = "Ehename_Mann"
beide Namen identisch
DANN

Code: Alles auswählen

'Ehepaar ' || "Ehename_Mann"
SONST

Code: Alles auswählen

 'Frau ' || "Ehename_Frau" || ' und Herr ' || "Ehename_Mann" 
wobei einfache Anführungszeichen einen feststehenden Text umschließen, doppelte die Spaltennamen und die zwei Pipes || den Text verketten.

Das "Anrede" vor FROM ist die neue Spaltenbezeichnung der entstandenen Spalte.

HTH R
Zuletzt geändert von F3K Total am Sa 31. Dez 2016, 15:18, insgesamt 1-mal geändert.
Windows 11: AOO, LO Linux Mint: AOO, LO

DrMartinus
Beiträge: 41
Registriert: So 10. Jul 2011, 06:35

Re: Problem mit bedingtem Text aufgrund von Feldinhalten

Beitrag von DrMartinus » Do 29. Dez 2016, 12:10

Danke, das ist sehr erhellend!

Nun noch eine Frage: ich will in dem Dokument ja noch mehr Daten aus der Datenbank übernehmen. Kann ich da im Serienbrief zwei verschiedene Abfragen aus der gleichen Datenbank als Quelle benutzen, oder sollte ich diese Abfrage zu der anderen Abfrage hinzufügen, damit alles aus einer Abfrage stammt?

Danke noch einmal für die Mühe und Zeit, die Du für mich aufwendest!


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten