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

Hilfe zu Parameterabfrage

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Maltan
Beiträge: 25
Registriert: Sa 3. Nov 2012, 18:07

Hilfe zu Parameterabfrage

Beitrag von Maltan » Sa 15. Nov 2014, 01:16

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

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

Re: Hilfe zu Parameterabfrage

Beitrag von RobertG » Sa 15. Nov 2014, 09:51

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:

Code: Alles auswählen

RIGHT( '0' || DAY( "Datum" ), 2 ) || '.' || RIGHT( '0' ||MONTH( "Datum" ), 2 ) || '.' || YEAR( "Datum" ) AS "Datum_als_Text" 
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:

Code: Alles auswählen

DAY( "Datum" )|| '.' || MONTH( "Datum" ) || '.' || YEAR( "Datum" ) AS "Datum_als_Text" 
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

Maltan
Beiträge: 25
Registriert: Sa 3. Nov 2012, 18:07

Re: Hilfe zu Parameterabfrage

Beitrag von Maltan » Di 18. Nov 2014, 13:14

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

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

Re: Hilfe zu Parameterabfrage

Beitrag von RobertG » Di 18. Nov 2014, 16:00

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

Code: Alles auswählen

( LOWER ( "Dienste"."Datum" ) LIKE LOWER ( :qDatum || '%' ) OR :qDatum IS NULL )
durch

Code: Alles auswählen

( "Dienste"."Datum" =:qDatum)
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

Maltan
Beiträge: 25
Registriert: Sa 3. Nov 2012, 18:07

Re: Hilfe zu Parameterabfrage

Beitrag von Maltan » Mi 19. Nov 2014, 11:23

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

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

Re: Hilfe zu Parameterabfrage

Beitrag von F3K Total » Mi 19. Nov 2014, 18:33

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
Dateianhänge
Dienstplan neu.zip
(49.96 KiB) 182-mal heruntergeladen
Windows 11: AOO, LO Linux Mint: AOO, LO

Maltan
Beiträge: 25
Registriert: Sa 3. Nov 2012, 18:07

Re: Hilfe zu Parameterabfrage

Beitrag von Maltan » Do 20. Nov 2014, 15:53

Vielen Dank sieht gut aus und funktioniert, jetzt muss ich nur noch eine ordentliche Eingabe der Dienste und ansehnliche Berichte mit diversen Ergebnissen hinbekommen.

Maltan
Beiträge: 25
Registriert: Sa 3. Nov 2012, 18:07

Re: Hilfe zu Parameterabfrage

Beitrag von Maltan » Fr 21. Nov 2014, 22:10

Da stellt sich die nächste Frage: Wie bekomme ich das Filterergebnis in einen Bericht?

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

Re: Hilfe zu Parameterabfrage

Beitrag von F3K Total » Sa 22. Nov 2014, 12:45

Na,
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
und baue den Bericht darauf auf.
Gruß R
Windows 11: AOO, LO Linux Mint: AOO, LO

Maltan
Beiträge: 25
Registriert: Sa 3. Nov 2012, 18:07

Re: Hilfe zu Parameterabfrage

Beitrag von Maltan » Do 4. Dez 2014, 22:44

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.



Antworten