Seite 1 von 1

Parameterabfrage

Verfasst: Fr, 23.12.2016 10:54
von Jörg
Hallo Fachleute,
Bei nachfolgender Abfrage:

Code: Alles auswählen

SELECT "Name", "Vorname", "Rezept-datum", "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "10.", "weitere Daten, wenn mehr als 10 Behandlungen pro Verordnung" AS "11.", "12" AS "12.", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36" FROM "Tabelle16" WHERE LOWER ("Name") Like LOWER (:qName ||'%')
erhalte ich die Abb. -Fehlermeldung
Fehler.PNG
Fehler.PNG (26.02 KiB) 5099 mal betrachtet
An diesem Schnipsel könnte es liegen.

Code: Alles auswählen

WHERE LOWER ("Name") Like LOWER (:qName ||'%')
Diesen hab ich einem Tutorial (YouTube) entnommen.
Die Tabelle selbst ist aus Calc importiert. "Normale" Abfragen, auch z.Bsp. LIKE 'Richt%' funtionieren (allerdings muß Groß- bzw. Kleinschreibung beachtet werden.
Vielleicht hat einer eine Idee?
Vielen Dank!

Re: Parameterabfrage

Verfasst: Fr, 23.12.2016 16:13
von RobertG
Hallo Jörg,

vielleicht aus

Code: Alles auswählen

WHERE LOWER ("Name") Like LOWER (:qName ||'%')

Code: Alles auswählen

WHERE LOWER ("Name") Like LOWER (:qName) ||'%'
machen. Schließlich ist es nur die Eingabe, die Du auf Kleinschreibung wechseln willst.

Ob das tatsächlich an dem Schnipsel liegt kannst Du ja testen, wenn Du die Bedingung einfach weglässt.

Gruß

Robert

Re: Parameterabfrage

Verfasst: Fr, 23.12.2016 16:50
von Jörg
Hallo Robert,
vielen Dank für Deine Antwort.
Deine vorgeschlagene Lösung funktioniert leider nicht.
Anbei ein Beispiel, das funktioniert.

Code: Alles auswählen

SELECT "Name", "Vorname", "Rezept-datum" AS "Rez.-dat.", "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "10.", "VO.1" AS "Verordng. 1", "VO.2" AS "Verordng. 2", "Indika-tionsschlüssel" AS "Indikationsschl.", "ICD-10-Code" AS "ICD_Code", "Erstverord-nung" AS "Erstver.", "Folge-verordnung" AS "Folgever.", "Verordnung außerhalb des Regel-falls" AS "Regelfall", "Abrechnungsmonat" FROM "Tabelle16" WHERE "Name" = :qName AND "Vorname" = :qVorname
Ich wollte erreichen, dass ich nicht den vollständigen "Namen" eingeben muß.
Hab in Bezug auf SQL noch nicht so oft was gemacht.
Vielen Dank.

Re: Parameterabfrage

Verfasst: Fr, 23.12.2016 20:49
von RobertG
Hallo Jörg,

die meisten Codeschnipsel, die Du irgendwo findest, sind für Base auf die Zusammenarbeit mit der internen HSQLDB gemünzt. Du machst das hingegen mit einer Calc-Tabelle.

Code: Alles auswählen

WHERE LOWER ("Name") LIKE CONCAT( LOWER (:qName),'%')
wird vermutlich zum Ziel führen.
Merkwürdigerweise unterstützt die GUI die Nutzung von || innerhalb der Felder, aber nicht innerhalb von LIKE.

Gruß

Robert

Re: Parameterabfrage

Verfasst: So, 25.12.2016 11:32
von Jörg
Hallo Robert,
zwischen Frühstück und Gänsebraten:

Code: Alles auswählen

SELECT "Name", "Vorname", "Rezept-datum" AS "Rez.-dat.", "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", "9.", "10.", "VO.1" AS "Verordng. 1", "VO.2" AS "Verordng. 2", "Indika-tionsschlüssel" AS "Indikationsschl.", "ICD-10-Code" AS "ICD_Code", "Erstverord-nung" AS "Erstver.", "Folge-verordnung" AS "Folgever.", "Verordnung außerhalb des Regel-falls" AS "Regelfall", "Abrechnungsmonat" FROM "Tabelle16" WHERE LOWER ( "Name" ) LIKE CONCAT( LOWER ( :qName ), '%' ) AND LOWER ( "Vorname" ) LIKE CONCAT( LOWER ( :qVorname ), '%' )
Das funktioniert soweit. :D
Allerdings in der Bearbeitungsansicht nur einmal. Bei nochmaligem Versuch kommt Syntaxfehler. Unter Kriterium wird nichts eingetragen.
Öffne ich die Abfrage oder das entsprechende Formular mit "Öffnen" klappt es. Aber das ist ja auch o.k.
Falls Du nach den Feiertagen Zeit findest:
Was bedeutet "CONCAT"?
Ich danke Dir für Deine Hilfe und wünsche Fröhliche Weihnachten und einen guten Rutsch ins Neue.

Re: Parameterabfrage

Verfasst: So, 25.12.2016 21:46
von nikki
Hallo Jörg,
Jörg hat geschrieben:Was bedeutet "CONCAT"?
Damit werden in einer SQL-Abfrage Texte verkettet. Siehe dazu https://www.tutorialspoint.com/sql/sql- ... nction.htm

Re: Parameterabfrage

Verfasst: Di, 27.12.2016 11:02
von Jörg
Hallo nikki,
Danke für Deinen Hinweis.
Guten Rutsch :)