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

Berechnung in Abfrage mit Parameter im Formular

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Herbert
Beiträge: 15
Registriert: Fr 23. Aug 2013, 20:45

Berechnung in Abfrage mit Parameter im Formular

Beitrag von Herbert » Mo 16. Sep 2013, 17:09

Guten Tag

Ich versuchte ein Abfrage zu konstruieren, welche mir die Beträge der Mitglieder in einem bestimmten Zeitruam summiert und diese mit einem bestimmten Prozentsatz multipliziert. Als Parameterabfrage funktioniert diese.

Damit ich die Parameter im Formular eingeben kann, ersetzte ich

" WHERE "Service"."Datum" >= :Datumvon AND "Service"."Datum" <= :Datumbis GROUP BY "Mitglieder"."Name", "Mitglieder"."Prozente" "durch

" WHERE "Datumvon" >= IFNULL( ( SELECT "Datumvon" FROM "Filter" ), "Datumvon" ) AND "Datumbis" <= IFNULL( ( SELECT "Datumbis" FROM "Filter" ), "Datumbis" ) GROUP BY ... ".

Diese Aenderung wird jedoch nicht akzeptiert, sowohl in der grafischen Ansicht noch im SQL-Modus.

Danke für Unterstützung.

Gruss Herbert

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

Re: Berechnung in Abfrage mit Parameter im Formular

Beitrag von RobertG » Mo 16. Sep 2013, 20:40

Hallo Herbert,

da fehlen zu viele Informationen, um sagen zu können, wo eventuell ein Fehler liegt.
Was heißt "Die Änderung wird nicht akzeptiert". Da muss doch irgendeine Meldung auftauchen.
Du hast

Code: Alles auswählen

WHERE "Service"."Datum" >= :Datumvon AND "Service"."Datum" <= :Datumbis GROUP BY "Mitglieder"."Name", "Mitglieder"."Prozente"
ersetzt durch

Code: Alles auswählen

WHERE "Datumvon" >= IFNULL( ( SELECT "Datumvon" FROM "Filter" ), "Datumvon" ) AND "Datumbis" <= IFNULL( ( SELECT "Datumbis" FROM "Filter" ), "Datumbis" ) GROUP BY ... 
(die Parameter scheinen übrigens im Text recht lustig ...)
Fehlt da nicht die Tabelle "Service"? Muss es nicht vielleicht heißen:

Code: Alles auswählen

WHERE  "Service"."Datum" >= IFNULL( ( SELECT "Datumvon" FROM "Filter" ),  "Service"."Datum" ) AND  "Service"."Datum" <= IFNULL( ( SELECT "Datumbis" FROM "Filter" ),  "Service"."Datum" ) GROUP BY ... 
?

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

Herbert
Beiträge: 15
Registriert: Fr 23. Aug 2013, 20:45

Re: Berechnung in Abfrage mit Parameter im Formular

Beitrag von Herbert » Mo 16. Sep 2013, 21:26

Hallo Robert

Hier die komplete SQL-Anweisung


SELECT "Mitglieder"."Name", SUM( "Service"."Beitrag" ), "Mitglieder"."Prozent", SUM( "Beitrag" * "Prozent" / 100 ) FROM { OJ "Servicio" RIGHT OUTER JOIN "Mitglieder" ON "Service"."Mitglied" = "Mitglieder"."ID" }

WHERE "Service"."Datum" >= :Datumvon AND "Service"."Datum" <= :Datumbis

GROUP BY "Mitglieder"."Name", "Mitglieder"."Prozent"

Bei dieser Anweisung kommt der Parameterdialog.


Ersetze ich WHERE wie ich es beschrieben kommt die Fehlermeldung "Die Daten können nicht heruntergeladen werden". Die gleiche Meldung kommt auch bei deinem Vorschlag.

Danke für deine Unterstützung.

Gruss Herbert

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

Re: Berechnung in Abfrage mit Parameter im Formular

Beitrag von RobertG » Di 17. Sep 2013, 17:10

Hallo herbert,
Herbert hat geschrieben: SELECT "Mitglieder"."Name", SUM( "Service"."Beitrag" ), "Mitglieder"."Prozent", SUM( "Beitrag" * "Prozent" / 100 ) FROM "Service" RIGHT JOIN "Mitglieder" ON "Service"."Mitglied" = "Mitglieder"."ID"
WHERE "Service"."Datum" >= :Datumvon AND "Service"."Datum" <= :Datumbis
GROUP BY "Mitglieder"."Name", "Mitglieder"."Prozent"
Die Abfrage funktioniert also ohne Probleme (habe das mit dem Join etwas für mich klarer gefasst).
Dir folgende Abfrage gibt ein Datum wieder?

Code: Alles auswählen

SELECT "Datumvon" FROM "Filter"
Das heißt: Deine Filter-Datei enthält zwei Datumsfelder, die jeweils nur einen Datensatz enthalten?
Dann würde ich anschließend stückchenweise vorgehen:

Code: Alles auswählen

SELECT "Mitglieder"."Name", SUM( "Service"."Beitrag" ), "Mitglieder"."Prozent", SUM( "Beitrag" * "Prozent" / 100 ) FROM "Service" RIGHT JOIN "Mitglieder" ON "Service"."Mitglied" = "Mitglieder"."ID" 
WHERE "Service"."Datum" >= (SELECT "Datumvon" FROM "Filter") AND "Service"."Datum" <= :Datumbis
GROUP BY "Mitglieder"."Name", "Mitglieder"."Prozent"
Dürfte nur dann gehen, wenn wirklich ein Datum in der Tabelle "Filter" in "Datumvon" steht.

Ansonsten kannst Du auch die Datei (ohne entsprechende Daten) hier einmal anhängen oder mir per persönlicher Mail schicken ...

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

Herbert
Beiträge: 15
Registriert: Fr 23. Aug 2013, 20:45

Re: Berechnung in Abfrage mit Parameter im Formular

Beitrag von Herbert » Mi 25. Sep 2013, 22:25

Hallo Robert

Deine Anweisung funktioniert super. Herzlichen Dank.

Gruss Herbert


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