🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ 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. 🤗

Datensätze als Literaturliste ausgeben [gelöst]

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
uburoi
Beiträge: 7
Registriert: Mi 16. Jan 2013, 14:16

Datensätze als Literaturliste ausgeben [gelöst]

Beitrag von uburoi » Mi 16. Jan 2013, 14:45

Hallo zusammen!

Ich habe ein Problem, bei dem ich Hilfe bräuchte und bei dem mich (vermutlich auch aufgrund eingerosteter und wenig vorhandener Datenbank-Kenntnisse) auch eine kursorische Handbuchlektüre erstmal nicht weiterbringt. Ich entschuldige mich vorweg für den langen Text, aber ich möchte mein Anliegen möglichst genau beschreiben. Falls die Info relevant ist: Ich arbeite mit LibreOffice 3.5.4.2 unter Ubuntu 12.04.

Um meinen Buchbestand zu verwalten, habe ich mir mit Base ein Formular erstellt, mit dessen Hilfe ich Datensätze eingebe. Soweit kein Problem. Nun würde ich aber gerne bei Bedarf eine Literaturliste erstellen, und da helfen mir die Berichtvorlagen nur wenig, da ich keine tabellarische Ausgabe wünsche. Ich habe folgende Datenfelder (ich beschränke mich der Einfachheit halber hier auf die nötigsten; den Rest werde ich mir hoffentlich später selbst zusammenreimen können):

"Autor" (Autorname der Form 'Nachname, Vorname'; kann leer sein)
"Weitere Autoren" (ggfs. weitere Namen der Form 'Vorname Nachname'; kann leer sein)
"Herausgeber" (Boolean-Checkbox; angeklickt, wenn es sich nicht um Autoren, sondern um Herausgeber -- etwa eines Sammelbandes -- handelt)
"Titel" (darf nie leer sein)
"Untertitel" (kann leer sein)

Die Ausgabe, die ich nun gerne im Writer hätte (habe so etwas mal irgendwann mit PHP fürs Web realisiert, daher die genaue Vorstellung, die ich auch so umsetzen möchte), wäre schematisch:
"Autorname"(wenn vorhanden,sonst keine Ausgabe) + "Weitere Autoren"(abgetrennt vom ersten Autor mit Semikolon und Leerzeichen; falls nicht vorhanden keine Ausgabe) + "Herausgeber"(wenn false, nur einen Doppelpunkt setzen; wenn true, '(Hrsg.):' setzen) + "Titel" + "Untertitel"(wenn vorhanden mit Punkt und Leerzeichen vom Titel abtrennen; sonst keine Ausgabe)

Zur Illustration noch ein konkretes Beispiel (beliebig herausgegriffen):
-- "Autor" = 'de Berg, Henk'
-- "Weitere Autoren" = 'Johannes Schmidt'
-- "Herausgeber" = 'true'
-- "Titel" = 'Rezeption und Reflexion'
-- "Untertitel" = 'Zur Resonanz der Systemtheorie Niklas Luhmanns außerhalb der Systemtheorie'
Diesen Datensatz hätte ich gerne im Writer mit folgender Zeile ausgegeben:
"de Berg, Henk; Johannes Schmidt (Hrsg.): Rezeption und Reflexion. Zur Resonanz der Systemtheorie Niklas Luhmanns außerhalb der Systemtheorie"

Was ich noch hinbekommen habe, ist eine Abfrage zu erstellen, die mir alle gewünschten Datensätze sortiert nach Autoren und Titel ausgibt. Aber wie ich diese Abfrage nun in der oben beschriebenen Form in ein Writer-Dokument bekomme, ist mir leider ein Rätsel.

Vielleicht weiß ja jemand eine einfache Lösung für dieses Problem? In jedem Fall bis hierher herzlichen Dank fürs Mitlesen! :)

Gruß Jens
Zuletzt geändert von uburoi am Fr 18. Jan 2013, 16:53, insgesamt 1-mal geändert.

Pit Zyclade
* LO-Experte *
Beiträge: 3041
Registriert: Mo 12. Nov 2012, 16:59

Re: Datensätze als Literaturliste ausgeben

Beitrag von Pit Zyclade » Mi 16. Jan 2013, 15:28

Offenbar willst Du als Ausgabe kein "Formular" sondern strukturierten fortlaufenden Text.
Den abe könntest Du doch gleich im Writer mit "Feldnamen" aus einer verbundenen Datenbank, die Du ja nun hast, erzeugen. Felder, die leer sind kann man mit Bedingungen aussparen.
Schwierig gestaltet sich nur die Gestaltung der "weiteren Autoren", da Du in dem Feld ja vermutlich eine andere Struktur hast als Du in der Ausgabe wünschst. Also müßte man den Inhalt erst zerlegen und da hört meine Vorstellung auf.
LO 24.8.7.2 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.

uburoi
Beiträge: 7
Registriert: Mi 16. Jan 2013, 14:16

Re: Datensätze als Literaturliste ausgeben

Beitrag von uburoi » Mi 16. Jan 2013, 15:50

Vielen Dank! Das mit den Feldnamen wusste ich noch gar nicht, das probiere ich gleich mal aus! :)

Und nein, "Weitere Autoren" wird nicht verändert, da musst du etwas missverstanden haben ...

Gruß Jens

EDIT: Hm, so weit die Theorie. Ich kann zwar die Datenbank wählen, aber weitere Optionen habe ich nicht, und wenn ich auf "Einfügen" klicke, passiert nichts ...

EDIT 2: Ok, wie man stur die Datensätze aneinanderreiht und ausgibt, habe ich inzwischen herausbekommen. Was mir jetzt noch fehlt, ist fallweise die Ausgabe der Datensätze zu modifizieren, nach dem Motto: WENN("Herausgeber"==true > '(Hrsg.):') SONST(':') etc.
Zuletzt geändert von uburoi am Mi 16. Jan 2013, 16:19, insgesamt 1-mal geändert.

pmoegenb

Re: Datensätze als Literaturliste ausgeben

Beitrag von pmoegenb » Mi 16. Jan 2013, 16:16

Hallo Jens,
-in der Tabellenübersicht (F4) die Tabelle oder Abfrage auswählen
- Datensätze markieren, dann werden die Schalter Daten in Text und Daten in Felder aktiv und können damit verwendet werden.

Beim Schalter Daten in Felder müssen im Writer zuvor Seriendruckfelder definiert werden. Ich empfehle Dir dafür Calc zu verwenden, dabei kann nur der Schalter Daten in Text verwendet werden.

uburoi
Beiträge: 7
Registriert: Mi 16. Jan 2013, 14:16

Re: Datensätze als Literaturliste ausgeben

Beitrag von uburoi » Mi 16. Jan 2013, 16:21

Hoppla, das hat sich überschnitten. :D So weit bin ich inzwischen auch (siehe "EDIT 2" in meinem vorigen Post). Nur die Ersetzungen/Ergänzungen weiß ich nicht einzubauen.

Gruß Jens

pmoegenb

Re: Datensätze als Literaturliste ausgeben

Beitrag von pmoegenb » Mi 16. Jan 2013, 16:31

Hallo Jens,

die SQL-Syntax für Bedingungen findest Du z. B.

- http://www.ooowiki.de/SQL?highlight=%28KategorieBase%29 oder
- http://www.sql-und-xml.de/sql-tutorial/

uburoi
Beiträge: 7
Registriert: Mi 16. Jan 2013, 14:16

Re: Datensätze als Literaturliste ausgeben

Beitrag von uburoi » Mi 16. Jan 2013, 16:50

Hm, ich steige da, ehrlich gesagt, noch nicht so richtig durch. Mit den SQL-Befehlen, von denen mir ein paar grundlegende noch geläufig sind, kann ich ja nur die Datenbank-Abfrage modifizieren, oder? Also etwa so:

SELECT "Autor", "Weitere Autoren" etc. FROM Datenbank ORDER BY "Autor", "Weitere Autoren" etc.

Mit diesem Befehl werden mir ja vermutlich die Datensätze ausgelesen, die ich unter F4 dann auswählen kann. Wenn ich die Datensätze nun markiere und "Daten in Text" klicke, kann ich ja auch ein Muster festlegen, wie die Ausgabe aussehen soll, etwa:

<Autor>; <Weitere Autoren> etc.

Allerdings sehe ich keine Möglichkeit, Alternativen zu definieren, wie etwa die, bei vorhandenen weiteren Autoren ". <Weitere Autoren>" auszugeben und andernfalls eben nichts.

Muss ich demnach schon bei der Datenbankabfrage für verschiedene Spalten jeweils eine IF-ELSE-Anweisung einbauen und ggfs. die Daten modifizieren -- und geht das überhaupt?

Gruß Jens

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

Re: Datensätze als Literaturliste ausgeben

Beitrag von F3K Total » Mi 16. Jan 2013, 18:38

Hallo,
ohne die genauen Bezeichnungen deiner Tabellenspalten wird es schwierig, aber CASE WHEN oder CASEWHEN, du liest richtig, mal mit Leerzeichen, mal ohne, können beide angewandt werden.
Beispiel:
Die boolean-Spalte hieße "Herausgeber", die, in der der Herausgeber steht, "Hrsg." und die Alternative Spalte "Sonstiges"
Dann geht:

Code: Alles auswählen

 ... , CASEWHEN ("Herausgeber" = TRUE,  "Hrsg.",  "Sonstiges") AS "Herausgeber", ...
oder auch

Code: Alles auswählen

 ... , CASE WHEN "Herausgeber" = TRUE THEN "Hrsg." ELSE "Sonstiges" END AS "Herausgeber", ...
in der Abfrage. Bitte nicht die Punkte mitnehmen, für die neue Spalte Herausgeber nur das zwischen den Kommas nehmen.
Wenn Du statt der Alternativspalte "Sonstiges" einen festen Begriff verwenden möchtest, geht auch dies:

Code: Alles auswählen

 ... , CASEWHEN ("Herausgeber" = TRUE,  "Hrsg.",  'Herausgeber unbekannt' ) AS "Herausgeber", ...
Viel Erfolg
R
Windows 11: AOO, LO Linux Mint: AOO, LO

uburoi
Beiträge: 7
Registriert: Mi 16. Jan 2013, 14:16

Re: Datensätze als Literaturliste ausgeben

Beitrag von uburoi » Do 17. Jan 2013, 11:46

Vielen Dank! Leider scheitert es daran, dass ich nicht weiß, wo ich den entsprechenden Code eingeben soll. Ich habe verschiedene Stellen ausprobiert, aber es will einfach nicht (Syntax-Error).

Ich nehme mal diese (funktionierende) Anweisung:

Code: Alles auswählen

SELECT "Autor", "Weitere Autoren"
FROM "Buchsammlung"
ORDER BY "Autor", "Weitere Autoren"
Folgendes möchte ich nun abfragen bzw. erreichen: Wenn "Weitere Autoren" leer ist, soll nur ein Doppelpunkt ausgegeben werden; ist "Weitere Autoren" nicht leer, soll der Wert (Text) ausgegeben werden, gefolgt von einem Doppelpunkt. Wie kann ich das nun mit CASEWHEN erreichen?

Gruß Jens

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: Datensätze als Literaturliste ausgeben

Beitrag von RobertG » Do 17. Jan 2013, 16:09

Hallo Janes,
uburoi hat geschrieben:

Code: Alles auswählen

SELECT "Autor", "Weitere Autoren"
FROM "Buchsammlung"
ORDER BY "Autor", "Weitere Autoren"
Folgendes möchte ich nun abfragen bzw. erreichen: Wenn "Weitere Autoren" leer ist, soll nur ein Doppelpunkt ausgegeben werden; ist "Weitere Autoren" nicht leer, soll der Wert (Text) ausgegeben werden, gefolgt von einem Doppelpunkt.

Code: Alles auswählen

SELECT "Autor", IFNULL("Weitere Autoren",':')
FROM "Buchsammlung"
ORDER BY "Autor", "Weitere Autoren"
Ist wohl die kürzeste Lösung. Allerdings fehlt vor dem Doppelpunkt eigentlich noch die Leertaste.
Ich würde bei Deiner Problemstellung sowieso alles zusammen in ein Feld packen dann brauchst Du in der Ausgabe immer nur ein Feld ohne zusätzlichen Text dazwischen zu schieben:

Code: Alles auswählen

SELECT "Autor"|| IFNULL(' :'||"Weitere Autoren",' :')
FROM "Buchsammlung"
ORDER BY "Autor", "Weitere Autoren"
Das Zeichen || verbindet die Ausgabe von Feldern miteinander.

Gruß

Robert
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare


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