Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi firebird upper('ü') (https://www.delphipraxis.net/68151-firebird-upper-ue.html)

DelphiDeveloper 25. Apr 2006 14:03

Datenbank: firebird • Version: 1.5 • Zugriff über: IBO

firebird upper('ü')
 
Weiß jemand wie man Firebird dazu zwingen kann, dass ein Upper von Strings auch mit Umlauten funktioniert?

Folgendes Statement wandelt den String nicht in Großbuchstaben um
SQL-Code:
select upper('ü') from rdb$database
Der gleiche Effekt hat man leider auch bei :parameter

TBx 25. Apr 2006 14:15

Re: firebird upper('ü')
 
Hallo DelphiDeveloper!

Das UPPER aus dem Firebird kann man dazu leider gar nicht bewegen.
Du kannst Dir dazu allerdings eine UDF bauen, die z. B. auf AnsiUpperCase basiert.
Damit wärs dann möglich.

Gruß

Thomas

mojo777 25. Apr 2006 18:31

Re: firebird upper('ü')
 
nix udf...
das geht auf jeden fall!
du musst das feld collaten...
hier beispiele:
felder sollten dann so definiert werden:
SQL-Code:
(...)
KND_STRASSE   VARCHAR(50) CHARACTER SET WIN1252,
(...)
insert:
SQL-Code:
INSERT INTO KUNDEN (KND_STRASSE) VALUES( ' _win1252 '''+edkndName.Text+''')
select:
SQL-Code:
'SELECT * FROM KUNDEN WHERE UPPER(KND_STRASSE COLLATE PXW_INTL850) LIKE UPPER(
_win1252 ''%'+edKndSuch.text+'%'' COLLATE PXW_INTL850)

hoffe das klappt auch bei dir.

gruß

TBx 26. Apr 2006 07:15

Re: firebird upper('ü')
 
Zitat:

Zitat von mojo777
nix udf...
das geht auf jeden fall!
du musst das feld collaten...

Hmm... ist irgendwie ein Widerspruch in sich ....
geht das nun auf jeden Fall oder nur mit der entsprechenden Collation ....

Ich stimme Dir zu, daß es Collations gibt, in denen zu den Umlauten auch ihre Upper-Übersetzungen vorhanden sind.
Werden diese bei Tabellenanlage und/oder Dateneingabe nicht verwendet, so funktioniert das UPPER dann leider wieder nicht.
Daher meine Empfehlung der UDF. Das dürfte immer funktionieren und ist auch ohne großen Aufwand in bereits bestehende Datenbanken einzubauen.

Gruß

Thomas

DelphiDeveloper 26. Apr 2006 08:00

Re: firebird upper('ü')
 
Danke für den Tip mit collate

SQL-Code:
select upper('ü' COLLATE DE_DE) from rdb$database
bringt mir das geünschte Ergebnis

mojo777 28. Apr 2006 17:15

Re: firebird upper('ü')
 
hi onlinekater,
hast du ein paar quellen für diese udfs?
würde mir das gerne mal genauer anschauen. :-)


gruß

Hansa 28. Apr 2006 17:34

Re: firebird upper('ü')
 
Guck mal hier :

http://www.delphipraxis.net/internal...ct.php?t=79019

In Grundzügen steht da drin, was zu tun ist. Sofern man beabsichtigt, das selber durchzuziehen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz