PDA

Vollständige Version anzeigen : Dringend! Sonderzeichen in Abfrage umwandeln??


DagmarG
25.09.2005, 15:00
Hallo Profis, kann mir jemand Helfen die Sonderzeichen wie ä, ö, ü, ß, in ae, oe, ue und ss Umwandeln. Dieses muß aber in einer Abfrage passieren.
Mit Replace kann ich immer nur einen Buchstaben umwandeln, Hat jemand eine Idee wie es in Abfrage zu schaffen ist. Habe eine TestDB angehangen.
Für schnelle Hilfe bin ich sehr dankbar.

Nouba
25.09.2005, 15:25
Hallo Dagmar,

die Replace-Funktion kann auch verschachtelt aufgerufen werden.

SELECT
Replace(
Replace(
Replace(
Replace(
Replace(
Replace(
Replace([Feldname], "Ä", "Ae", 1, -1, 0),
"Ö", "Oe", 1, -1, 0),
"Ü", "Ue", 1, -1, 0),
"ß", "ss", 1, -1, 0),
"ä", "ae", 1, -1, 0),
"ö", "oe", 1, -1, 0),
"ü", "ue", 1, -1, 0) AS NeuerFeldname
FROM EinerTabelle

DagmarG
25.09.2005, 15:56
Hallo nouba
ich weiß nicht wie ich es in der Abfrage einbinden kann.

Nouba
25.09.2005, 16:00
Hallo Dagmar,

kopiere den Text in die SQL-Ansicht einer neuen Abfrage und ersetze darin Feldname durch Deinen Feldnamen und EineTabelle durch Deinen Tabellennamen.

DagmarG
25.09.2005, 16:12
Hallo nouba,
funktioniert gut. Kann ich auch mehrere dieser SQL Abfragen in einer Abfrage bringen??
Und ich müsste mich auf einer Abfrage berufen und nicht auf eine Tabelle geht das auch??

Nouba
25.09.2005, 16:42
Das sollte möglich sein. Statt dem Tabellennamen wäre der Abfragename zu verwenden und für jede in Frage kommende Spalte muß natürlich das Replace/Ersetzen-Prozedere wiederholt werden.

PS: Du kannst Dir auch eine Funktion in einem öffentlichen Modul anlegen, die als Argument den Spaltenwert übernimmt - dann wird der Abfragetext nicht ellenlang.

Function German2ASCII(Spaltenwert As Variant) As Variant
German2ASCII = Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace( _
Replace(Nz(Spaltenwert), "Ä", "Ae", , , vbBinaryCompare) _
, "Ö", "Oe", , , vbBinaryCompare) _
, "Ü", "Ue", , , vbBinaryCompare) _
, "ß", "ss", , , vbBinaryCompare) _
, "ä", "ae", , , vbBinaryCompare) _
, "ö", "oe", , , vbBinaryCompare) _
, "ü", "ue", , , vbBinaryCompare)
End Function

SELECT
German2ASCII([FeldA]) AS NeuesFeldA
, German2ASCII([FeldB]) AS NeuesFeldB
, ...
FROM DeinerAbfrage

DagmarG
25.09.2005, 17:15
Hallo Nouba,
der code ist super. Besten Dank Funktioniert gut.

Gruß
Dagmar