Query verbessern

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Query verbessern

Re: Query verbessern

von RobertG » Fr, 19.02.2016 18:55

Hallo Antonio,

wenn Du bei

Code: Alles auswählen

SELECT * FROM "Tabelle" WHERE LOWER("Autor") LIKE '%'||LOWER(:Autor)||'%'
ohne Angabe eines Inhaltes für :Autor alle Datensätze aus "Tabelle" erhältst, dann liegt das daran, dass Deine Base-Version bei den Parameterabfragen statt NULL einen leeren Text an die Abfrage weiter gibt. Das ist in allen LO-Versionen vor LO 4.4 und vermutlich auch bei AOO der Fall. Es war bisher wohl niemandem aufgefallen, dass Parameterabfragen, in Formularen als Unterformular genutzt, bei leeren Feldern NULL auslesen, bei der direkten Abfrage dann aber einen leeren Text weitergaben.

Wenn Du die Parameterabfrage jetzt z.B. in ein Unterformular einbauen würdest und den Parameter aus dem Hauptformular ausliest, dann wird auch Deine Base-Version ohne eine Angabe von Inhalt für den Parameter keinen Datensatz angeben.

Gruß

Robert

Re: Query verbessern

von Antonio » Fr, 19.02.2016 16:54

Hallo,
cih habe die Aenderungen angebracht und es hat geklappt.

Die letzte Lösung ist :

"Möchtest Du einen Eintrag machen, der an beliebiger Stelle im Autorennamen vorkommt, dann geht das so:"
SELECT * FROM "Tabelle" WHERE LOWER("Autor") LIKE '%'||LOWER(:Autor)||'%'
Liegt da nicht einen Fehler inder Query?
Wenn cih eine beliebige Suche eingebe, werden alle Daten angezeigt.

Danke für die Infos.
Antonio

Re: Query verbessern

von Antonio » Mo, 15.02.2016 18:40

Vielen Dank fuer die Loesungen.
Antonio

Re: Query verbessern

von RobertG » Fr, 12.02.2016 16:08

Hallo Antonio,

folgende Schritte führen nach und nach zu einer Verbesserung. Ich schreibe hier zuerst einmal die Fassung, die sich zeigt, wenn Du auf den SQL-Code umschaltest.

Code: Alles auswählen

SELECT * FROM "Tabelle" WHERE "Autor" LIKE :Autor||'%'
Jetzt brauchst Du nur die korrekten Anfangsbuchstaben.
In der grafischen Benutzeroberfläche schreibst Du stattdessen als Kriterium

Code: Alles auswählen

WIE :Autor || '%'
Bitte auf die Leerzeichen achten.
Möchtest Du das unabhängig von Groß- und Kleinschreibung haben:

Code: Alles auswählen

SELECT * FROM "Tabelle" WHERE LOWER("Autor") LIKE LOWER(:Autor)||'%'
Sowohl der Inhalt der Spalte "Autor" als auch Deine Eingabe werden in Kleinschreibung verglichen. Mit UPPER würdest Du die Großschreibung vergleichen.
In der grafischen Benutzeroberfläche musst Du jetzt den Eintrag für das Feld ändern. Statt "Autor" steht dort dann LOWER ( "Autor" ). Hier auch auf die Leerzeichen achten. In den Kriterien dann ebenfalls das LOWER() mit entsprechenden Leerzeichen einfügen. Das Ganze geht erheblich einfacher ohne Beachtung der Leerzeichen, wenn Du die Design-Ansicht ausschaltest.
Möchtest Du einen Eintrag machen, der an beliebiger Stelle im Autorennamen vorkommt, dann geht das so:

Code: Alles auswählen

SELECT * FROM "Tabelle" WHERE LOWER("Autor") LIKE '%'||LOWER(:Autor)||'%'
Gruß

Robert

Query verbessern

von Antonio » Fr, 12.02.2016 12:08

Guten Tag.
Ich habe alle meine Bücher in einer Databank gespeichert.
Die Datenbank besteht aus folgende Felder :
Titel, Untertitel, Autor, Verlag, Jahr, ISBN, Sprache

Jetzt kann ich in der Query "suche Autor" alle Bücher des Autors anzeigen lassen.
Leider hat die Query Schönheitsfehler:
Man muss den ganzen Namen und Vornamen des Autors in der Suche schreiben mit Gross- und Kleinbuchstaben.

Gibt es einen Lösung, um die Query flexibler zu schreiben?
Im Abfrageentwruf habe ich unter Kriterium " :Autor "geschrieben.

Danke für die Hilfe.
Antonio

Nach oben