🙏 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. 🤗

Im Bericht ein Feld anzeigen

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Mr. Cutty
Beiträge: 18
Registriert: So 10. Mär 2013, 16:51

Re: Im Bericht ein Feld anzeigen

Beitrag von Mr. Cutty » Mi 13. Mär 2013, 15:11

Moin Robert,

im Zuge meiner Recherche was die Datenbank betrifft, bin ich auf eine Sache gestoßen, die mir irgendwie nicht klar ist. In einigen Datenbanken habe ich in den Abfragen eine Art Pseudo-Tabelleneintrag (a) gesehen. So auch in der Übungsdatei "Quittung", welche Du in einem anderen Threat eingestellt hast, siehe Anhang. Dieser Eintrag (a) taucht auch nicht im Feld "Tabelle oder Abfrage einfügen" auf, weil es diese "Tabelle a" ja nicht gibt.

Ich habe nun ein Verständnisproblem damit, wie dieser Eintrag in der Abfrage zustande kommt, respektive wie man ihn erstellt und für was man diesen benötigt. Ist das eine Art Trick 17?

Gruß

Franky
Dateianhänge
Tabelle a.jpg
Tabelle a.jpg (8.93 KiB) 4450 mal betrachtet

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

Re: Im Bericht ein Feld anzeigen

Beitrag von RobertG » Mi 13. Mär 2013, 15:45

Hallo Franky,

ja, eine Art Trick - nennst sich "korrelative Unterabfrage", siehe auch das Handbuch ...

Code: Alles auswählen

SELECT * FROM "Tabelle"
Ist eine Abfrage ohne Alias. Kein Problem, wenn mit den Werten nichts besonderes gemacht werden will.

Code: Alles auswählen

SELECT "a".* FROM "Tabelle" AS "a"
Ist eine Abfrage mit einer Aliasbezeichnung. Die Tabelle erscheint jetzt in der GUI als "a", nicht mehr als "Tabelle". Wozu das gut sein soll?

Code: Alles auswählen

SELECT "a".*, (SELECT "Wert" FROM "Tabellexyz" WHERE "ID" = "a"."Tabellexyz_ID") AS "Wert" FROM "Tabelle" AS "a"
Der Unterabfrage sucht aus Tabellexyz den Wert heraus, der zu dem aktuellen Datensatz von Tabelle passt. Damit kannst Du Berechnungen durchführen, die sich immer auf die aktuellen Datensätze beziehen. So kannst Du z.B. bei Kontoauszügen einen laufenden Kontostand, gegebenenfalls noch nach Kategorien aufgesplittet, innerhalb einer Abfrage erzeugen. Und das Gute daran: Du kannst diese Abfrage auch noch weiterhin editieren, d.h. als Grundlage für ein Formular nutzen.

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

thorgo
Beiträge: 10
Registriert: Mo 11. Mär 2013, 22:53

Re: Im Bericht ein Feld anzeigen

Beitrag von thorgo » Mi 13. Mär 2013, 15:49

Betrachte die Abfrage mal in dieser Ansicht, dann dürfte sie schlüssiger sein.
Die Tabelle (a) ist Besandteil des Statements und wird in diesem erst gebildet.

VG
Thorsten
Dateianhänge
Abfrage2.JPG
Abfrage2.JPG (46.88 KiB) 4449 mal betrachtet

Mr. Cutty
Beiträge: 18
Registriert: So 10. Mär 2013, 16:51

Re: Im Bericht ein Feld anzeigen

Beitrag von Mr. Cutty » Mi 13. Mär 2013, 16:09

Vielen Dank für die ausführliche Erklärung, die Licht in das Dunkel gebracht hat. Vor lauter Hin- und Herklicken in den Datenbanken habe ich jedoch den Blick ins Handbuch schlichtweg vergessen, Asche auf mein Haupt.

Allerdings verhält sich LO (Version Version 4.0.0.3 (Build ID: 7545bee9c2a0782548772a21bc84a9dcc583b89)), Win 8 x64, auf meinem PC so, dass es eine Fehlermeldung gibt, sobald ich im Menü Asicht -> Design-Ansicht an-, ausschalten gehe, um den SQL Code zu betrachten (Bug?). Im Abfragemanager jedoch funktioniert's mit Rechtsklick -> in SQL-Ansicht bearbeiten, um mir den SQL Code anzuzeigen.

Gruß

Franky

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

Re: Im Bericht ein Feld anzeigen

Beitrag von RobertG » Mi 13. Mär 2013, 16:57

Hallo Franky,

Base kann die Abfrage so nicht richtig erkennen. Das passiert, sobald eine korrelative Unterabfrage drin ist. Eigentlich wäre es aus der Sicht besser, wenn Base die Abfrage direkt im SQL-Modus öffnen würde. Für andere Konstruktionen macht Base das - warum das bei dieser Konstruktion fehl schlägt kann ich nicht sagen.

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

Mr. Cutty
Beiträge: 18
Registriert: So 10. Mär 2013, 16:51

Re: Im Bericht ein Feld anzeigen

Beitrag von Mr. Cutty » Mi 13. Mär 2013, 22:01

'N Abend zusammen,

als Unwissender muss ich erneut nerven. In der Übungsdatenbank "Quittung" möchte ich zum probieren gerne die MWSt in die Abfrage "Verkauf_berechnet" einbauen. Dazu habe ich schon die verschiedensten Lösungsansätze in den Weiten des Internets gefunden. So auch eine von Dir, Robert, die da lautet:

SELECT "ID", "Preis", "MWSt", "Preis"/((100+"MWSt") / 100) AS "Netto" FROM "Tabelle"

Da dachte ich mir, oh prima, die baue ich doch mal gleich in angepasster Form zu Übungszwecken in die Übungsdatenbank "Quittung" ein. Kann ja so schwer nicht sein. Fleutchenpiepen - das war'n Satz mit X. Ich stehe mal wieder auf dem Schlauch. Nun frage ich mal in die Runde, wie müsste der SQL Code auf Tabelle "a" bezogen aussehen?

Davon ausgehend, dass

SELECT "Spalten_Name" FROM "Tabellen_Name" WHERE "Bedingung"

ein Ansatz sein könnte, vermutete ich, dass

( SELECT "Preis" * "a"."Anzahl" * 0,19 FROM "Ware" WHERE "ID" = "a"."Ware_ID" ) AS "MWSt" FROM "Ware"

als Ergänzung mich zum Ziel führen könnte, lag natürlich total falsch damit.

Gruß

Franky

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

Re: Im Bericht ein Feld anzeigen

Beitrag von RobertG » Mi 13. Mär 2013, 22:40

Hallo Franky,
Mr. Cutty hat geschrieben: ( SELECT "Preis" * "a"."Anzahl" * 0,19 FROM "Ware" WHERE "ID" = "a"."Ware_ID" ) AS "MWSt" FROM "Ware"
Vorsicht mit dem Komma. Das ist in Abfragen für die Auftrennung von Feldern vorgesehen. In LO 3.3.4 führt so ein Code unweigerlich zum Absturz von Base. In LO der neueren Version will Base eine zusätzliche Spalte gründen - und die geht nicht bei einer Unterabfrage. Also: wenn schon, dann mit einem Dezimalpunkt arbeiten. Und da in der Tabelle, soweit ich das jetzt aus dem Gedächtnis aufschreibe, die MWSt als zweistellige Ziffernfolge steht, müsste das wohl folgendermaßen gehen:

Code: Alles auswählen

( SELECT "Preis" * "a"."Anzahl" *"MWSt"/100 FROM "Ware" WHERE "ID" = "a"."Ware_ID" )  AS "MWSt"
... und all das ohne FROM "Ware", da das ja eine korrelative Unterabfrage zu "Verkauf" AS "a" ist.

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

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Im Bericht ein Feld anzeigen

Beitrag von gogo » Mi 13. Mär 2013, 22:53

Mr. Cutty hat geschrieben: ... mal gleich in angepasster Form

Code: Alles auswählen

( SELECT "Preis" * "a"."Anzahl" * 0,19 FROM "Ware" WHERE "ID" = "a"."Ware_ID" )  AS "MWSt" FROM "Ware"
ops, da passt ja gar nix so wirklich ;)

Code: Alles auswählen

SELECT ("Ware"."Preis" * "a"."Anzahl" * 0.19) AS "MWSt" FROM "Ware", "a" WHERE "Ware"."ID" = "a"."Ware_ID"
... könnte evtl. passen, allerdings sind das nur die einzelnen MWSt-Beträge ohne sonstige Information. Außerdem bin ich mir fast sicher, dass Du diese Werte noch auf Rundungdfehler prüfen musst...
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu

Mr. Cutty
Beiträge: 18
Registriert: So 10. Mär 2013, 16:51

Re: Im Bericht ein Feld anzeigen

Beitrag von Mr. Cutty » Do 14. Mär 2013, 10:15

Moin zusammen,

vielen Dank für Eure Antworten und Eure Geduld. Werde das nachher mal umzusetzen versuchen.

Edit:
Tja, so wie es sich darstellt, mag es die hier installierte LO Version nicht, wenn ich den SQL Code ändere. Daran ändert selbst ein Update von Java auf die neueste Version nichts. Dabei spielt es keine Rolle, ob ich den Code über den optischen Abfragenmanager ändere oder direkt im Syntaxeditor - in beiden Fällen kommt es beim Versuch abspeichern zu wollen zu einer Fehlermeldung "Syntax error in SQL expression". Das Gleiche passiert übrigens auch, wenn ich via F5 die Abfrage versuchsweise laufen lassen möchte. Das ist in den letzten Tagen auch mit verschiedenen anderen SQL Codes so passiert.

LO mag es anscheinend auch nicht, wenn ich im SQL Editor Anführungszeichen (") eingebe. Noch bevor ich was ändern kann, stürtzt LO sofort und ohne weitere Vorwarnung ab. Keine Ahnung, ob es nun an meinen bescheidenen SQL-Kenntnissen liegt oder an LO selbst.

Gruß

Franky

gogo
* LO-Experte *
Beiträge: 1081
Registriert: Sa 5. Feb 2011, 19:07

Re: Im Bericht ein Feld anzeigen

Beitrag von gogo » Do 14. Mär 2013, 13:14

1. die Option "SQL direkt ausführen" aktivieren - hat schon oft geholfen ;)
2. Test-DB mal hochladen (sensible Daten vorher killen)
g
2008 LucidL./MaverickM./WinXP LibreOffice 3.3.2 > 02/13 LinuxMint13/Xubuntu > 09/13 Debian Wheezy+LO3.5.4.2 > 01/15 Debian Jessie KDE+LO4.3.3.2/Mint17 openbox auf USB+LO4.2.8.2 > 03/16 ArchLin & LO5.1+ff > 02/18 Kubuntu


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