🙏 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!🍀
>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗
Hilfe zu Parameterabfrage
Hilfe zu Parameterabfrage
Ein Anfänger sucht wieder mal Hilfe.
Habe eine Parameterabfrage erstellt:
SELECT "Dienste"."Datum" "Datum", "Personal"."Name" "Name", "Schicht"."Bezeichnung" "Bezeichnung", "Schicht"."Reih_id" FROM "Dienste", "Personal", "Schicht" WHERE "Dienste"."Pers_id" = "Personal"."ID" AND "Schicht"."ID" = "Dienste"."Schicht_id" AND ( LOWER ( "Dienste"."Datum" ) LIKE LOWER ( :qDatum || '%' ) OR :qDatum IS NULL ) AND ( LOWER ( "Personal"."Name" ) LIKE LOWER ( :qName || '%' ) OR :qName IS NULL ) AND ( LOWER ( "Schicht"."Bezeichnung" ) LIKE LOWER ( :qBezeichnung || '%' ) OR :qBezeichnung IS NULL ) ORDER BY "Schicht"."Reih_id" ASC
Die klappt für "Bezeichnung" und den "Namen". Das Datum lässt sich nicht abfragen. Liegt das vielleicht am Feldtypen der Tabelle (Date)?
Vielen Dank für Euere Hilfe
Habe eine Parameterabfrage erstellt:
SELECT "Dienste"."Datum" "Datum", "Personal"."Name" "Name", "Schicht"."Bezeichnung" "Bezeichnung", "Schicht"."Reih_id" FROM "Dienste", "Personal", "Schicht" WHERE "Dienste"."Pers_id" = "Personal"."ID" AND "Schicht"."ID" = "Dienste"."Schicht_id" AND ( LOWER ( "Dienste"."Datum" ) LIKE LOWER ( :qDatum || '%' ) OR :qDatum IS NULL ) AND ( LOWER ( "Personal"."Name" ) LIKE LOWER ( :qName || '%' ) OR :qName IS NULL ) AND ( LOWER ( "Schicht"."Bezeichnung" ) LIKE LOWER ( :qBezeichnung || '%' ) OR :qBezeichnung IS NULL ) ORDER BY "Schicht"."Reih_id" ASC
Die klappt für "Bezeichnung" und den "Namen". Das Datum lässt sich nicht abfragen. Liegt das vielleicht am Feldtypen der Tabelle (Date)?
Vielen Dank für Euere Hilfe
Re: Hilfe zu Parameterabfrage
Hallo Maltan,
mit LIKE ... werden Zeichenketten verglichen. Mit LOWER() werden Zeichenketten in Kleinbuchstaben umgewandelt. Beides passt überhaupt nich zu einem Datumsfeld. Mittels LOWER() wandelst Du ein Datum in einen Text um. Damit wird aber das Datum umgewandelt, was in der entsprechenden Formatierung aus der Datenbank kommt. Nicht die Datumsschreibweise, wie sie mit der Formatierung in LO für Dich sichtbar ist. Aus dem 15.11.14 wird dann 2014-11-15. Damit fragst Du dann bei LOWER ( :qDatum || '%' ) zuerst die vierstellige Jahreszahl ab. Auf den Tag und den Monat kommst Du so nicht.
Wenn Du unbedingt das Datum mit einer LIKE-Abfrage durchsuchen möchtest, dann musst Du die Datenbankschreibweise umwandeln:
Damit hast Du dann die hier übliche Schreibweise. Die Umformulng mit RIGHT('0' ...) ist nur dann notwendig, wenn Du grundsätzlich ein Datum mit zweistelligem Tag und zweistelligem Monat haben möchtest. Sonst geht es auch mit:
Gruß
Robert
mit LIKE ... werden Zeichenketten verglichen. Mit LOWER() werden Zeichenketten in Kleinbuchstaben umgewandelt. Beides passt überhaupt nich zu einem Datumsfeld. Mittels LOWER() wandelst Du ein Datum in einen Text um. Damit wird aber das Datum umgewandelt, was in der entsprechenden Formatierung aus der Datenbank kommt. Nicht die Datumsschreibweise, wie sie mit der Formatierung in LO für Dich sichtbar ist. Aus dem 15.11.14 wird dann 2014-11-15. Damit fragst Du dann bei LOWER ( :qDatum || '%' ) zuerst die vierstellige Jahreszahl ab. Auf den Tag und den Monat kommst Du so nicht.
Wenn Du unbedingt das Datum mit einer LIKE-Abfrage durchsuchen möchtest, dann musst Du die Datenbankschreibweise umwandeln:
Code: Alles auswählen
RIGHT( '0' || DAY( "Datum" ), 2 ) || '.' || RIGHT( '0' ||MONTH( "Datum" ), 2 ) || '.' || YEAR( "Datum" ) AS "Datum_als_Text"
Code: Alles auswählen
DAY( "Datum" )|| '.' || MONTH( "Datum" ) || '.' || YEAR( "Datum" ) AS "Datum_als_Text"
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Hilfe zu Parameterabfrage
Vielen Dank für die Antwort,
das kommt eben dabei heraus wenn einer der Null Ahnung hat einen Code aus einer Datenbank/abfrage kopiert und ummodelt.
Ich will das Datum nicht in Text umwandeln sondern nur diese drei Parameter (Datum, Bezeichnung, Name) innerhalb ein Abfrage filtern. Die Abfrage soll auch ein Ergebnis bringen wenn zu einem oder mehreren Parameter keine Eingaben gemacht werden.
Dazu bräuchte ich den richtigen Code.
Darf ich auf Hilfe hoffen?
Vielen Dank im Voraus
das kommt eben dabei heraus wenn einer der Null Ahnung hat einen Code aus einer Datenbank/abfrage kopiert und ummodelt.
Ich will das Datum nicht in Text umwandeln sondern nur diese drei Parameter (Datum, Bezeichnung, Name) innerhalb ein Abfrage filtern. Die Abfrage soll auch ein Ergebnis bringen wenn zu einem oder mehreren Parameter keine Eingaben gemacht werden.
Dazu bräuchte ich den richtigen Code.
Darf ich auf Hilfe hoffen?
Vielen Dank im Voraus
Re: Hilfe zu Parameterabfrage
Hallo Maltan,
was genau sollen denn die Personen, die die Abfrage ausführen, eingeben? Wenn Du in Deiner Abfrage für das Datum z.B. '2014' eingibst, dann werden alle Datensätze aus dem Jahr 2014 angezeigt. Ich nehme an, dass hier lediglich die Eingabe im Moment nicht passend ist. Möchtest Du wirklich ein komplettes Datum? Dann ersetze
durch
Gruß
Robert
was genau sollen denn die Personen, die die Abfrage ausführen, eingeben? Wenn Du in Deiner Abfrage für das Datum z.B. '2014' eingibst, dann werden alle Datensätze aus dem Jahr 2014 angezeigt. Ich nehme an, dass hier lediglich die Eingabe im Moment nicht passend ist. Möchtest Du wirklich ein komplettes Datum? Dann ersetze
Code: Alles auswählen
( LOWER ( "Dienste"."Datum" ) LIKE LOWER ( :qDatum || '%' ) OR :qDatum IS NULL )
Code: Alles auswählen
( "Dienste"."Datum" =:qDatum)
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
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare
Re: Hilfe zu Parameterabfrage
Hat leider noch nicht geklappt irgeneinen Fehler habe ich nocht gemacht.
Könnten Sie sich bitte den Dateianhang ansehen und den Code der Abfrage_Name_Datum_Bez anpassen.
Es soll möglich sein, dass eine Eingabe auch bezüglich Parameter Datum nicht gemacht werden muss (IS NULL ?)
Vielen Dank für die Bemühungen
Könnten Sie sich bitte den Dateianhang ansehen und den Code der Abfrage_Name_Datum_Bez anpassen.
Es soll möglich sein, dass eine Eingabe auch bezüglich Parameter Datum nicht gemacht werden muss (IS NULL ?)
Vielen Dank für die Bemühungen
Re: Hilfe zu Parameterabfrage
Klappt nicht,
der Parameterdialog kann das leere Datum nicht interpretieren, anbei eine Lösung mit Formular, da klappt's auch mit leerem Datum.
Gruß R
der Parameterdialog kann das leere Datum nicht interpretieren, anbei eine Lösung mit Formular, da klappt's auch mit leerem Datum.
Gruß R
- Dateianhänge
-
- Dienstplan neu.zip
- (49.96 KiB) 182-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Hilfe zu Parameterabfrage
Vielen Dank sieht gut aus und funktioniert, jetzt muss ich nur noch eine ordentliche Eingabe der Dienste und ansehnliche Berichte mit diversen Ergebnissen hinbekommen.
Re: Hilfe zu Parameterabfrage
Da stellt sich die nächste Frage: Wie bekomme ich das Filterergebnis in einen Bericht?
Re: Hilfe zu Parameterabfrage
Na,
das geht nun einfach, die Filterkriterien stehen in der Tabelle Filter, erstelle diese Ansicht:und baue den Bericht darauf auf.
Gruß R
das geht nun einfach, die Filterkriterien stehen in der Tabelle Filter, erstelle diese Ansicht:
Code: Alles auswählen
SELECT
"Dienste"."Datum",
"Personal"."Name",
"Schicht"."Bezeichnung",
"Schicht"."Reih_id"
FROM
"Dienste",
"Personal",
"Schicht",
"Filter"
WHERE
"Dienste"."Pers_id" = "Personal"."ID"
AND
"Schicht"."ID" = "Dienste"."Schicht_id"
AND
( LOWER ( "Personal"."Name" ) LIKE LOWER ( "F_NAME"|| '%' ) OR "F_NAME" IS NULL )
AND
( LOWER ( "Schicht"."Bezeichnung" ) LIKE LOWER ( "F_BEZEICHNUNG"|| '%' ) OR "F_BEZEICHNUNG" IS NULL )
AND
( "Dienste"."Datum" >= "F_DATUM_VON" OR "F_DATUM_VON" IS NULL )
AND
( "Dienste"."Datum" <= "F_DATUM_BIS" OR "F_DATUM_BIS" IS NULL )
ORDER BY
"Schicht"."Reih_id" ASC
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Hilfe zu Parameterabfrage
Vielen Dank
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.