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

Textfelder verbinden und Bericht danach sortieren

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
rudd68
Beiträge: 19
Registriert: Sa 12. Mär 2016, 09:23

Textfelder verbinden und Bericht danach sortieren

Beitrag von rudd68 » So 22. Mai 2016, 20:03

Hallo,

ich habe mir eine Filmdatenbank mit Titel, Genre, Inhalt usw. angelegt. Dazu ein Formular und einige Berichte definiert. Klappt ganz gut.
Diese Filmdatenbank enthält für die Bewertung des Films auch die Textfelder "Anspruch", "Spannung", "Action", "Humor", "Erotik", "Gesamt", wo jeweils kein oder mehrere "+"-Zeichen als Ersatz für fehlende große Sterne eingetragen werden können. Das Feld "Gesamt" ist nicht zwingend die Summe der Einzelwertungen.

Bsp.:

Code: Alles auswählen

Anspruch   Spannung   Action   Humor    Gesamt
   ++         +++       +++              ++++ 
Nun habe ich einen Bericht (bisher ohne Abfrage), der alle Datensätze sortiert nach "Gesamt" zeigt.

Bei gleicher Anzahl Gesamt-"+" möchte ich gern eine untergeordnete Sortierung nach der Anzahl "+" aller anderer Bewertungen oder was das gleiche ist, nach der Textlänge von "Anspruch"&"Spannung"&"Action"& usw.

Ich kriege es aber weder im Bericht, noch in einer Abfrage hin. Wie macht man sowas? Ich habe Libre Office 5.1.

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

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von RobertG » Mo 23. Mai 2016, 17:16

Hallo rudd68,

müsste in der Abfrage so etwas sein wie

Code: Alles auswählen

SELECT LENGTH("Anspruch")+LENGTH("Spannung") +... AS "Wertung" FROM "Tabelle"
sein.

Ich würde allerdings die Wertung direkt in Form von Ziffern eingeben und nur entsprechend als Sternchen anzeigen lassen.

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

rudd68
Beiträge: 19
Registriert: Sa 12. Mär 2016, 09:23

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von rudd68 » Do 26. Mai 2016, 11:01

Hallo RobertG,

vielen Dank erstmal für deine Hilfe.

Ich bin noch beim Experimentieren und werde in einigen Tagen darüber berichten.

Gruß

rudd68
Beiträge: 19
Registriert: Sa 12. Mär 2016, 09:23

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von rudd68 » Sa 28. Mai 2016, 03:26

Bezüglich der besseren Speicherung von numerischen Werten anstelle von Texten möge man mir nachsehen, dass ich in diesem ersten Datenbankversuch noch nicht die Kenntnis habe, im Bericht die numerischen Werte wieder in Texte umzuformen (also aus 3 mach '+++') und deshalb erstmal bei der Speicherung der Bewertungen in Textform verbleibe. Wird ja auch nur eine kleine Datenbank mit ca. 150 Datensätzen. Über eine Info hierzu würde ich mich dennoch freuen.

Da meine Berichte nur sortierte formularähnliche Auflistungen sind, sah ich keine Notwendigkeit, dafür eine Abfrage zu erstellen, weil Base bei den Berichten in der Entwurfsansicht bei der Sortierung die Eingabe von Ausdrücken zulässt. Allerdings scheint dies generell nicht zu funktionieren.

Ich probierte Ausdrücke mit und ohne '=' am Anfang, mit den Funktionen LENGTH() oder LEN(), Feldnamen in "" oder in [] oder ohne Begrenzer, egal wie, es gab stets Fehlermeldungen ("Column not found" oder "Syntax-Fehler"). Nicht einmal bedeutungslose numerische Ausdrücke wie =5 oder =(5) oder nur 5 werden akzeptiert. Ich denke mal, da ist Base verbuggt.

Also versuchte ich die Sortierung in einer Abfrage in der SQL-Ansicht. Auch hier waren die Token LENGTH( und LEN( nicht bekannt. Da die Bewertungen nur "+"-Zeichen enthalten, reicht eine Verbindung der Texte aus und danach dann die Sortierung.

Allerdings funktioniert diese SQL-Anweisung nicht einwandfrei:

Code: Alles auswählen

Select *, "Anspruch" || "Spannung" || "Action" || "Humor" || "Erotik" AS Wertung From "Filme" Order By "Gesamt" DESC, Wertung DESC, "Titel" ASC;
Ist nämlich auch nur ein Feld leer, hat dies den Wert NULL und unterdrückt in Wertung alle anderen "+"-Zeichen, Wertung wird NULL und die Sortierung falsch.

Danke an RobertG für den Link zum Handbuch. Dort konnte ich die passende Funktion finden. Und so funktioniert die Abfrage perfekt:

Code: Alles auswählen

Select *, IFNULL("Anspruch",'') || IFNULL("Spannung",'') || IFNULL("Action",'') || IFNULL("Humor",'') || IFNULL("Erotik",'') AS Wertung From "Filme" Order By "Gesamt" DESC, Wertung DESC, "Titel" ASC;
Hier werden mit der Funktion IFNULL() leere Felder (die haben den Wert NULL) durch leere Zeichenketten (sind nicht NULL) ersetzt, dann funktioniert auch die Verkettung mit "||" zu Wertung und die Sortierung wird korrekt.

Aber wie bekomme ich jetzt in meinen fertig definierten Bericht diese neue Abfrage hinein? Und wenn Datensätze erfasst wurden und der Bericht wird ausgeführt, wird doch hoffentlich auch die Abfrage neu ausgeführt, oder? Über Hinweise wäre ich sehr dankbar.

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

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von RobertG » Sa 28. Mai 2016, 09:34

Hallo rudd68,

wenn Du das Handbuch heruntergeladen hast: Das erste Bild im Kapitel "Berichte" zeigt den Reiter "Daten" an. Dort kannst Du die Datengrundlage für Deinen Bericht auf eine Abfrage ändern.
Diese Ansicht erhältst Du direkt beim Erstellen eines Berichtes. Im Nachhinein ist die Ansicht etwas versteckt. Rufe dazu den Navigator im Bericht auf. Klicke im Navigator auf "Bericht". Dann ist die Ansicht mit den Daten wieder sichtbar.

Die Abfrage wird jedes Mal beim Aufruf des Berichtes neu ausgeführt.

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

rudd68
Beiträge: 19
Registriert: Sa 12. Mär 2016, 09:23

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von rudd68 » Sa 28. Mai 2016, 13:13

Hallo Robert,

vielen Dank für deine schnelle Antwort. Ich habe so wie du geschrieben hast, die Abfrage in den Bericht eingebunden.

Hier die Abfragedefinition (das Feld "Gesamt" heißt in meiner Datenbank "Urteil"):

Bild

Die Abfrage und auch die Sortierung funktioniert tadellos:

Bild

Und hier die Berichtsdefinition mit der obigen Abfrage als Datengrundlage:

Bild

Bei der Ausführung des Berichtes treten Fehler auf:

Bild

Eine funktionierende Abfrage funktioniert nicht im Bericht. Egal, ob "SQL-Befehl analysieren" auf "Ja" oder "Nein" steht. Hast du oder sonst jemand noch eine Idee?

Vielen Dank.

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

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von RobertG » Sa 28. Mai 2016, 19:45

Hallo rudd68,

der Haken ist die Sortierung Deiner Abfrage. So etwas funktioniert auch innerhalb des Abfrageeditors nicht korrekt. Nimm einfach einmal Deine Abfrage und schreibe zu Beginn:
SELECT * FROM (...bisheriger Abfragetext...)
Das dürfte auch einen Fehler entsprechender Art ausgeben. Die Sortierung sollte im Bericht über die Gruppierung erfolgen, nicht in der Abfrage.
Setze außerdem die "Wertung" in doppelte Anführungsstriche.

Grundsätzlich kann es manchmal Probleme mit Abfragen in Verbindung mit dem Report-Builder geben. Diese Probleme lassen sich leicht beheben, indem aus der Abfrage eine Ansicht erstellt wird (rechte Maustaste > Ansicht erstellen ...). Eine Ansicht ist für alle darauf zugreifenden Programmteile gleich einer Tabelle - nur ohne Schreibmöglichkeit.

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

rudd68
Beiträge: 19
Registriert: Sa 12. Mär 2016, 09:23

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von rudd68 » So 29. Mai 2016, 17:49

Ich habe die Sortierung aus der Abfrage herausgenommen. Da der Bericht auf die Abfrage zugreift, gibt es im Bericht bei der Sortierung jetzt das Feld Wertung. Ich sortierte also im Bericht nach Urteil absteigend, Wertung absteigend, Titel aufsteigend. - Funktioniert nicht, der Bericht wird unsortiert ausgegeben.

Mit Rechtsklick auf die Abfrage erstellte ich eine Ansicht (da die Abfrage ohne Sortierung ist, ist auch diese Ansicht ohne Sortierung). Im Bericht ging ich über den Navigator auf Daten und wählte dort als Art des Inhaltes: Tabelle und als Inhalt: diese Ansicht. Die Sortierung im Bericht behielt ich bei. - Funktioniert auch nicht, der Bericht wird unsortiert ausgegeben.

Nun nahm ich in die Abfrage wieder die Sortierung auf ("Order By ..."), erstellte eine neue Ansicht mit gleichem Namen (ich musste dazu erst die alte Ansicht löschen, überschreiben geht nicht), diese neue Ansicht ist also sortiert, den Bericht konnte ich unverändert lassen. - Funktioniert. Der Bericht gibt die Datensätze sortiert nach Urteil absteigend, Wertung absteigend und Titel aufsteigend aus.

Ich hatte aber Zweifel, ob beim Erfassen von Datensätzen auch eine automatische Aktualisierung des Berichtes erfolgt, da ja mehrere Zwischenstufen drin hängen Tabelle - Abfrage - Ansicht - Bericht. Ich erfasste einen Testdatensatz und mit Aufrufen des Berichtes war er korrekt einsortiert. Funktioniert also automatisch.

Zusammenfassend lässt sich sagen:

Libre Office 5.1. Base Berichte können nicht

- nach Ausdrücken sortieren,
- sortierte Abfragen verwenden,
- Abfragen sortiert darstellen, (Edit: das geht doch, siehe 5 Beiträge weiter unten)
- Ansichten sortieren. (Edit: auch das geht, wenn die Abfrage formell korrekt ist, siehe 5 Beiträge weiter unten)

Libre Office 5.1. Base Berichte können

- nach Feldern einer Datenbanktabelle sortieren
- nach Ausdrücken sortieren, indem aus Abfragen mit Sortierbefehl (Order By ...) erstellte sortierte Ansichten (unverändert sortiert) dargestellt werden (Edit: Ansichten sind nicht zwingend erforderlich, siehe 5 Beiträge weiter unten)
- geänderte Datensätze bei Aufruf des Berichtes automatisch korrekt sortieren

Robert, du hast mir sehr, sehr geholfen. Ganz herzlichen Dank dafür.

Gruß
Rainer
Zuletzt geändert von rudd68 am Sa 11. Jun 2016, 00:28, insgesamt 2-mal geändert.

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

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von RobertG » So 29. Mai 2016, 20:58

Hallo Rainer,

hast Du bei Deinen Sortierversuchen mit dem Report-Builder zum Schluss "SQL-Befehl analysieren" auf "Ja" stehen gehabt? Damit sollte eigentlich die Sortierung funktionieren. Ist das nicht der Fall, so kannst Du mir gerne per privater Mail ein entsprechendes Beispiel zusenden. Das würde ich dann als Bug melden.

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

rudd68
Beiträge: 19
Registriert: Sa 12. Mär 2016, 09:23

Re: Textfelder verbinden und Bericht danach sortieren

Beitrag von rudd68 » Mi 1. Jun 2016, 01:54

Hallo Robert,

PN ist erledigt. Die Datenbank ist hier als doc beigefügt. Einfach nur wieder in odb umbenennen.

Vielen Dank.

Gruß Rainer
Dateianhänge
Filme_Bugreport.doc
(60.21 KiB) 123-mal heruntergeladen


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