Moin,
Aufgabe: Einen Datensatz anhand eines Namens in einer
DB finden.
Ein Editfeld enthält den zu suchenden Begriff: "König Günter".
Damit ich bei der Schreibweise kein Theater bekomme, habe ich die Vergleichswerte in Großschrift gewandelt:
Das Coding sieht so aus:
Delphi-Quellcode:
qryKd.SQL.Text := sSQL +
' AND UPPER(Kd.Name1) LIKE ' + QuotedStr(UPPERCASE(TRIM(edtName1.Text)) + '%') +
' ORDER BY Kd.Name1';
und das kommt in der
Query an:
AND UPPER(Kd.Name1) LIKE 'KöNIG GüNTER%' ORDER BY Kd.Name1
Ich finde natürlich nicht einen Datensatz,
da die Umlaute nicht in Großschrift übersetzt worden sind!
Nächste Idee: Alles auf Kleinschrift bringen:
Delphi-Quellcode:
qryKd.SQL.Text := sSQL +
' AND LOWER(Kd.Name1) LIKE ' + QuotedStr(LOWERCASE(TRIM(edtName1.Text)) + '%') +
' ORDER BY Kd.Name1';
Ergebnis:
AND LOWER(Kd.Name1) LIKE 'kÖnig günter%' ORDER BY Kd.Name1
Diesmal bleiben
groß geschriebenen Umlaute auch in Großschrift.
Ich werde wohl die Umlaute durch die benötigten
Ascii-Werte ersetzen müssen.
Weiß jemand, warum die Umlaute von UPPERCASE nicht groß gemacht werden, bzw. bei LOWERCASE nicht klein gemacht werden?
Rolf
wenn nicht anders angegeben, schreibe ich zu D7, XE2 und MS
SQL - ansonsten fragen Sie ihren Administrator oder einen Operator. Update 06/2020: Delphi 10.4 Sydney