Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Umlaute anzeigen egal ob Ü oder UE usw. (https://www.delphipraxis.net/54236-umlaute-anzeigen-egal-ob-ue-oder-ue-usw.html)

SKolberg 30. Sep 2005 10:24


Umlaute anzeigen egal ob Ü oder UE usw.
 
Hi,

Ich habe ein TEdit als Suchfeld in welches der Teil,-Artikelname eingegeben wird und dann die gefundenen Datensätze in einem DBGrid anzeigt. In der DB sind Daten mal mit UE oder mal mit Ü geschrieben, wie kann ich es erreichen das er wenn ich z.B. nach Ä suche er auch AE anzeigt?


Mfg, Steve

Hansa 30. Sep 2005 10:28

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
Es gibt das Wort OR für IF - Abfragen. Und dann noch die Funktion POS -> Hilfe. Damit ist das eine Kleinigkeit. 8)

Jelly 30. Sep 2005 10:31

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
Standardgegenfrage: Welche Datenbank?

in MSSQL könntest du dir ne Funktion schreiben die dir alle ü in ue umwandelt. Die Abfrage könnte dann so lauten:
SQL-Code:
select * from Kontakte where dbo.umlaute(Nachnname) = 'Mueller'
Dafür musst du natürlich auch von Delphi heraus sicherstellen, dass du die ü in ue umwandelts, und dann auch tatsächlich nach Mueller suchts... Mixen kannst du beides nicht

Jelly 30. Sep 2005 10:39

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
Zitat:

Zitat von Hansa
Es gibt das Wort OR für IF - Abfragen. Und dann noch die Funktion POS -> Hilfe. Damit ist das eine Kleinigkeit. 8)

Das musst du mir mal näher erklären, was du da meinst. Er will doch Abfragen in der Datenbank machen. Was nützt denn da If, Or und Pos?

SKolberg 30. Sep 2005 10:40

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
HI,

ich arbeite mit MySQL. Die Ü und UE umwandeln ist schlecht da es vorgeschriebene Bezeichnungen sind und nicht einfach so geändert werden sollen/dürfen. Was mich nervt ist einfach nur das ich nach "ÜBUNG" suche er mir die auch zurück gibt aber eben nicht "UEBUNG" umgekehrt soll es natürlich auch gehen.

Suche -> Üb = Ueb, Üb
Suche -> Ueb = Ueb, Üb
Suche -> Öl = Oel, Öl

usw....


Mfg, Steve

Jelly 30. Sep 2005 10:44

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
Kann man in MySQL Funktionen erstellen :gruebel:

Wenn nicht, hast du ein Problem. Zum Suchen/Vergleichen hast du nur 2 Möglichkeiten... ü mit ü oder ue mit ue, soll heissen, entweder du wandelst bei der Suchabfrage alle ü in ue um, oder umgekehrt.

Ich glaub aber du hast mich falsch verstanden. Ich meinte nicht, dass du in der DB die Einträge änderst, sondern dass du nur bei der Suche die ü in ue umwandelst.

Wenn du in Delphi schreibst,
Delphi-Quellcode:
if uppercase(Dummy)='MUELLER' then begin
   ...
end ;
hast du den Inhalt von Dummy ja auch nicht verändert, sondern nur die Grossschreibung für den Vergleich herangezogen.

EDIT: OK, hab grad mal kurz nachgeschaut, MySQL scheint auch Funktionen zu unterstützen, also sollte sowas machbar sein...

Jelly 30. Sep 2005 10:51

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
MySQL scheint sowas sogar oder eigene Benutzerfunktion zu unterstützen:

Hier hätte ich was für dich. Um die regular expression zu erstellen fragst aber lieben jemand anderen :wiejetzt:

SKolberg 30. Sep 2005 10:51

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
Hi,
gut danke dann werde ich mal bei MySQL schauen, da wird sich bestimmt was finden.


Mfg, Steve

himitsu 30. Sep 2005 10:53

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
zu dem OR ...

mach doch einfach 2 Suchstrings.

einmal wo die Ä's, Ö's, Ü's... drin sind
und dann noch 'nen Zweiten, wo du dann die Namen aus dem ersten String hernimmst und mit StringReplace alles in AE, OE... umwandelst.

Und dann läßt du einfach nach beiden Strings in der DB suchen (natürlich OR-verknüpft).

Hansa 30. Sep 2005 10:55

Re: Umlaute anzeigen egal ob Ü oder UE usw.
 
Was treibt ihr denn da ? :shock:

Normalfall :

Delphi-Quellcode:
DS.SelectSQL.Text := 'SELECT * FROM TABLE1 WHERE UPPER (NAME) LIKE UPPER (''%' + edSuch.Text + '%'') ORDER BY NR';
;

Groß/Kleinschreibung gleich miterschlagen. 8) Beliebige Position im Suchstring möglich.

für ä/ae abgewandeltes SelectSQL :

Delphi-Quellcode:
if pos ('ae',edSuch.Text) <> 0 then begin
  HilfStr := StringReplace (edSuch.Text ... ä durch ae ersetzen !
  DS.SelectSQL.Text := 'SELECT * FROM TABLE1 WHERE UPPER (NAME) LIKE UPPER (''%' + edSuch.Text + '%'') OR UPPER (NAME) LIKE UPPER (''%' + HilfStr + '%'') ORDER BY NR';
;

Reicht das ? :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 Uhr.
Seite 1 von 4  1 23     Letzte »    

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