Probleme mit VBA - SQL Abfrage mit Umlauten

Gast #3255920
Lesenswert?

Salu zusammen

Ich habe hier ein Problem an welchem ich mir langsam aber sicher die 
Zähne ausbeisse. Vielleicht kann mir ja jemand von Euch einen 
entscheidenden Tipp geben.

Es handelt sich um eine mySQL Datanbank welche mittels Excel (ODBC) 
Verbindung abgefragt werden soll.

Die Verbindung steht, ich kann auch Datensätze abrufen ect. Die 
Grundfunktionalität ist gegeben.

Stellt euch ein Textfeld vor in welches Ihr einen Namen reinschreibt.

BSP: Ihr fangt an mit "G"
-> Abfrage, also SELECT wird entsprechend angepasst und es kommen nur 
noch die Namen welche mit G beginnen. ("G%")

Ihr tippt ein weiteres Zeichen z.B. "R"
-> Abfrage, also SELECT wird entsprechend angepasst "GR%"

So weit so gut, nun tippt ihr einen Umlaut ein, z.B. "Ü"
-> Abfrage, also SELECT wird entsprechend angepasst "GRÜ%"

Nun wird der Datensatz angezeigt welcher mit GRÜ beginnt, stimmt ja auch 
noch. Wenn jedoch nun ein weiterer Buchstabe hinzukommt, z.B. ein "N", 
dann ist ende Feuer. Es stürzt nichts ab, gibt keine Fehlermeldung ect. 
aber er bleibt auf dem ersten Datensatz den er findet stehen, also wenn 
es z.B. einen DAtensatz gibt der mit GRÜA beginnt, kommt immer der, auch 
wenn mein SELECT nach z.B. GRÜZZE suchen würde. Hoffe ich konnte das 
verständlich ausdrücken. Das Problem ist also, dass ich zwar in VBA sehe 
das der String richtig aufgebaut wird, aber wohl bei der Umsetzung 
irgendetwas mit den Umlauten passiert.

ZWEITENS:
Wenn ich z.B. in meinem VBA schreibe a = Asc("Ä") dann hat a nachher den 
Wert 219! Das stimmt ja in keinster Weise. Ä wäre ja laut ASCII Tabelle 
128. Bei Buchstaben welche einen ASCII Wert kleiner 128 aufweisen funzt 
die Funktion, bei allen darüber nicht.

Da ich in der CH wohne ist als Tastatursprache Deutsch (Schweiz) 
eingestellt.

Langsam weiss ich echt nicht mehr weiter. Wie kann ich eine Abfrage 
generieren welche mit Umlauten korrekt umgeht? Das Problem ist nicht 
neu, auch wenn man im Netz schaut, aber eine Lösung welche funktioniert 
konnte ich bis jetzt nicht finden.

Wäre toll, falls jemand schonmal so ein Prob hatte, wenn er sich kurz 
melden könnte

Es Grüessli

RS
Persönliche Seite #3256008
Lesenswert?

RS schrieb:
> laut ASCII Tabelle 128

Heutzutage nutzt man idr aber kein ASCII mit Codetabelle sondern UTF-8.
Du solltest also klären:
- Welches Encoding du in VB hast
- Welches für VB <-> ODBC genutzt wird
- Welches für ODBC <-> MySQL genutzt wird
- Welches deine MySQL Tabelle nutzt

Du kannst auch mal einen Datensatz mit Sonderzeichen in eine Testtabelle 
einfügen und dir dann mit einem anderem Tool in der DB direkt ansehen ob 
das überhaupt klappt. Eventuell kann auch eine Google Suche hilfreich 
sein: http://forums.mysql.com/read.php?70,165129,165129
Gast #3256017
Lesenswert?

Entschuldigung, das hätte ich vielleicht noch anmerken sollen:

Ich kenne die DB nicht. Ich habe die Zugangsdaten (zur DB), aber ich 
kann mich nicht auf dem Server einloggen (keine Berechtigung) Ebenso 
habe ich keine Möglichkeit einen Datensatz zu generieren und in die DB 
einzufügen. Habe natürlich nur ReadOnly Rechte grrrrrr Immer dieser 
Sicherheitsfanatismus...

Auf die Idee einen Datensatz zu erstellen bin ich eben auch gekommen, 
aber leider funktioniert das wegen obenstehender Problematik nicht :o(

Werde mir das aber mit UTF8 ect. mal genauer anschauen. Auch die ODBC 
Einstellungen werde ich mir mal genauer zu Gemüte führen.

Merci bereits für die Antworten

Grüessli

RS
Gast #3256019
Lesenswert?

Läubi .. schrieb:
> Heutzutage nutzt man idr aber kein ASCII mit Codetabelle sondern UTF-8.

was aber meist neue Problem erzeugt. Weil es dann viele verschienden 
"Ü"s geben kann. Diese sehen alle gleich aus sind aber einen anderen 
UTF8 code. Dann wird es zwar immer richtig dargestellt aber suchen kann 
man immer noch nicht.
Gast #3256023
Lesenswert?

Hm, komisch

Wenn ich unter Systemsteuerung - Verwaltung - ODBC Datenquellen...

gehe und dort den Treiber in den Benutzerdatenquellen selektiere und auf 
Konfigurieren gehe kommen zwei Fehlermeldungen:

1. "Die Setup-Routinen für den MySQL ODBC 5.1 Driver ODBC-Treiber 
konnten nicht gefunden werden. Installieren sie den Treiber erneut"

2. Fehler gefunden: Der angegebene DSN weist eine nicht übereinstimmende 
Architektur von Treiber und Anwendung auf.

Und was sagt mir das genau? Sorry, habe nicht so Ahnung von Datenbanken, 
ist ziemliches Neuland für mich

Grüessli

RS
Gast #3256027
Lesenswert?

RS schrieb:
> Und was sagt mir das genau?

das die ODBC-Treiber installation versaut ist. Also Treiber neu 
installierne. (im schlimmsten fall ist es ein 32/64 bit Problem. Dann 
den Treibermanager gibt es als 32 und als 64bit version. Ein 32bit 
programm sieht also andere Datenquellen als ein 64bit Programm)
Persönliche Seite #3256080
Lesenswert?

RS schrieb:
> Wenn ich z.B. in meinem VBA schreibe a = Asc("Ä") dann hat a nachher den
> Wert 219! Das stimmt ja in keinster Weise. Ä wäre ja laut ASCII Tabelle
> 128.

Nein. In ASCII gibt es keine Umlaute. Das ist ein reiner 
7-Bit-Zeichensatz, jenseits von 127 gibt es da keine Zeichen.

Was für eine "ASCII-Tabelle" meinst Du?

Unter DOS wird Codepage 437 bzw. 850 verwendet, da ist Ä 142 (0x8e). 
Windows-Programme verwenden üblicherweise Codepage 1252 ("ANSI", bzw. 
ISO8859-1), da ist Ä 196 (0xc4).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren