[gelöst]Parameterabfrage - Groß- und Kleinschreibung ignorieren

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Comkra
Beiträge: 3
Registriert: Fr, 05.08.2016 11:18

[gelöst]Parameterabfrage - Groß- und Kleinschreibung ignorieren

Beitrag von Comkra » Fr, 05.08.2016 11:30

Hallo,
ich möchte in einer Datenbank Mandanten (Kunden) per Nachname suchen um sämtliche Informationen über den jeweils Gesuchten zu erhalten.
Mit folgender Abfrage funktioniert das bisher recht gut, jedoch sind manche Nachnamen komplett klein geschrieben, bei Anderen der erste oder die ersten zwei Buchstaben groß. Gibt es eine Möglichkeit, Groß- und Kleinschreibung bei der Parameterabfrage komplett zu ignorieren? Bisher muss ich dieses Problem mit Platzhaltern bei der Eingabe lösen, da ich bei der Suche nach "Müller" kein Ergebnis zu "müller" erhalte.

Code: Alles auswählen

SELECT * FROM "Mandanten" WHERE "Nachname" LIKE :Nachname
Mandanten.Nachname ist als Feldtyp Text[VARCHAR] erstellt und bei jedem Mandanten vorhanden.
Zuletzt geändert von Comkra am Mo, 08.08.2016 18:26, insgesamt 1-mal geändert.

nikki
******
Beiträge: 672
Registriert: Do, 05.03.2015 10:42

Re: Parameterabfrage - Groß- und Kleinschreibung ignorieren

Beitrag von nikki » Fr, 05.08.2016 12:31

Hallo,

Code: Alles auswählen

SELECT * FROM "Mandanten" WHERE LOWER("Nachname") LIKE :Nachname OR "Nachname" LIKE :Nachname
Gruß

---------------------------------------------------------
Win.10 Prof. 64-bit, AOO 4.1.6, LO 6.1.4 (x86)

Comkra
Beiträge: 3
Registriert: Fr, 05.08.2016 11:18

Re: Parameterabfrage - Groß- und Kleinschreibung ignorieren

Beitrag von Comkra » Fr, 05.08.2016 12:34

Danke, jetzt funktioniert es! :)

RobertG
*******
Beiträge: 1735
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Parameterabfrage - Groß- und Kleinschreibung ignorieren

Beitrag von RobertG » Fr, 05.08.2016 17:07

Hallo *,

hier noch die Kurzvariante:

Code: Alles auswählen

SELECT * FROM "Mandanten" WHERE LOWER("Nachname") LIKE LOWER(:Nachname)
wobei da die Verbindung mit LIKE keinen Sinn ergibt. Der ergibt sich erst, wenn nur nach Wortteilen gesucht werden soll:

Code: Alles auswählen

SELECT * FROM "Mandanten" WHERE LOWER("Nachname") LIKE '%'||LOWER(:Nachname)||'%'
Dann braucht nur ein Buchstabe eingegeben zu werden und alle Nachnamen mit dem entsprechenden Buchstaben erscheinen.

Gruß

Robert

Hubsi56

Re: Parameterabfrage - Groß- und Kleinschreibung ignorieren

Beitrag von Hubsi56 » Mo, 08.08.2016 11:05

sämtliche Informationen über den jeweils Gesuchten
Ich kann dich soweit beunruhigen, dass wenn du dafür per "Volltext" über alle Tabellen deiner Datenbank bzw. über mehr als ein Feld einer Tabelle suchen musst, deine Datenbank nicht gut aufgebaut ist. Jede Information sollte nur einmal vorkommen und über Beziehungen mit anderen Informationen verknüpft sein.

Google doch mal den Begriff "Normalform"!

Comkra
Beiträge: 3
Registriert: Fr, 05.08.2016 11:18

Re: Parameterabfrage - Groß- und Kleinschreibung ignorieren

Beitrag von Comkra » Mo, 08.08.2016 18:09

Hubsi56 hat geschrieben:
sämtliche Informationen über den jeweils Gesuchten
Ich kann dich soweit beunruhigen, dass wenn du dafür per "Volltext" über alle Tabellen deiner Datenbank bzw. über mehr als ein Feld einer Tabelle suchen musst, deine Datenbank nicht gut aufgebaut ist. Jede Information sollte nur einmal vorkommen und über Beziehungen mit anderen Informationen verknüpft sein.

Google doch mal den Begriff "Normalform"!
Bild

Ich habe neben der Suche nach Mandanteninformationen natürlich auch z.B. eine Suche nach offenen Rechnungen eines Mandanten durch Eingabe des Nachnamens.
Hier frage ich aus einer Ansicht aller offenen Rechnungen den jeweiligen Nachnamen ab.
Sollte ich hierfür den Aufbau verändern? Die Abfragen müssen anwenderfreundlich sein, da das Sekretariat die Informationen so schnell wie möglich ermitteln muss. Daher laufen alle Abfragen wenn möglich über den Nachnamen des jeweiligen Mandanten.
RobertG hat geschrieben:Hallo *,

hier noch die Kurzvariante:

Code: Alles auswählen

SELECT * FROM "Mandanten" WHERE LOWER("Nachname") LIKE LOWER(:Nachname)
wobei da die Verbindung mit LIKE keinen Sinn ergibt. Der ergibt sich erst, wenn nur nach Wortteilen gesucht werden soll:

Code: Alles auswählen

SELECT * FROM "Mandanten" WHERE LOWER("Nachname") LIKE '%'||LOWER(:Nachname)||'%'
Dann braucht nur ein Buchstabe eingegeben zu werden und alle Nachnamen mit dem entsprechenden Buchstaben erscheinen.

Gruß

Robert
VIelen Dank! Die zweite Abfrage ist genau das was ich gesucht habe. :D
Zuletzt geändert von Comkra am Mo, 08.08.2016 18:25, insgesamt 1-mal geändert.

Hubsi56

Re: Parameterabfrage - Groß- und Kleinschreibung ignorieren

Beitrag von Hubsi56 » Mo, 08.08.2016 18:14

Nein, perfekt. Ich hatte nach deiner Frage etwas anderes vermutet.

Leichter tust du dir übrigens, wenn du nicht mit Parameterabfragen arbeitest, sondern mit Formularen. Du siehst dann mehr Informationen auf einen Blick, zum Beispiel alle Müllers in einem Tabellenkontrollfeld, anklickbar. Und dazu die Informationen aus anderen Tabellen per Unterformular.

RobertG
*******
Beiträge: 1735
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: [gelöst]Parameterabfrage - Groß- und Kleinschreibung ignorieren

Beitrag von RobertG » Mo, 08.08.2016 21:45

Hallo Hubsi56,

Parameterabfragen müssen doch nicht nur als Abfragen gebraucht werden. Sie können auch in einem Unterformular eingebaut werden.
Hauptformular: 1 Tabelle mit nur einem Datensatz, der immer wieder überschrieben wird.
Unterformular: Parameterabfrage, Parameter verbunden mit einem Feld der Tabelle aus dem Hauptformular.
Außerdem im Unterformular ein Button zum Aktualisieren der Abfrage.

Im Hauptformular wird etwas eingetragen. Der Button aus dem Unterformular wird betätigt. Dadurch wird der Datensatz abgespeichert (Wechsel des Formulars) und das Unterformular auf den Wert aus dem Hauptformular eingestellt.

So ein Formular mit Datenfilterung ist den meisten anderen Suchfunktionen von der Schnelligkeit her deutlich überlegen.

Gruß

Robert

Antworten