Forum: PC-Programmierung Probleme mit VBA - SQL Abfrage mit Umlauten


von RS (Gast)


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

von Peter II (Gast)


Lesenswert?

hast du mal in den ODBC einstellungen geschaut was dort für ein 
Zeichensatz ausgeählt ist?

von Peter II (Gast)


Lesenswert?

Nachtrag:

was passiert wenn du direkt mit dem mysql (also ohne Excel) diese 
abfrage machst?

von Läubi .. (laeubi) Benutzerseite


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

von RS (Gast)


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

von Peter II (Gast)


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.

von Peter II (Gast)


Lesenswert?

RS schrieb:
> Ich kenne die DB nicht. Ich habe die Zugangsdaten (zur DB), aber ich
> kann mich nicht auf dem Server einloggen (keine Berechtigung)

wenn du mit excel drauf kommt, dann kommst du auch mit dem mysql client 
draur.

von RS (Gast)


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

von Peter II (Gast)


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)

von Rufus Τ. F. (rufus) Benutzerseite


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).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.