Access/VBA: numerisches Format sicherstellen
Rouven
- datenbank
Hello,
und nochmal eine Frage zu Access. Folgendes ist die Problemstellung: Eine Anwendung soll in der Lage sein, ohne Wenn und Aber beliebige Daten einzulesen - beliebig heißt in diesem Fall, in der Quelle gibt es eine Spalte x, also lesen wir das Ganze ein als
wertname | wert
x | <wert von x>
Um uns auf den Wenn und Aber-Aspekt zu verlassen, werden die Daten als Text eingelesen. Ziel des ganzen ist unter anderem eine anschließende Qualitätsprüfung, d.h. ich kann Daten in ungültigen Formaten leider nicht schon beim Einlesen wegschmeißen, weil ich dann die Verwendbarkeitsquote nicht neu berechnen kann.
Nun habe ich folgendes Problem: Der Benutzer kann bestimmte Felder (im Sinne von "x" oben) als numerisch markieren. Für die Anwendung heißt dies, sie wird später versuchen bestimmte Aggregationen auf diese Daten anzuwenden, z.B.
SELECT SUM(...). Jetzt ist Access vermeintlich relativ intelligent und führt automatisch eine Konvertierung in Double o.ä. durch, wenn die Daten texttuell sind. Schön, aaaaber: Es ist nicht klar, welchen Ländereinstellungen die abgelegten Daten gefolgt sind, d.h. ob "." oder "," als Dezimaltrennzeichen verwendet wird - das einzige was vorgeschrieben ist, ist die Abwesenheit von 1000er-Trennzeichen.
Damit weiß ich also folgendes: Wenn ich mir ein Datenfeld anschaue, das der Benutzer als numerisch gekennzeichnet hat, und ich finde darin "." oder ",", dann ist das definitiv das Dezimaltrennzeichen. Was mit jetzt fehlt ist das Wissen, welches Trennzeichen denn die Datenbank gemäß Ländereinstellungen derzeit für das gültige hält, da sonst bei der automatischen Umwandlung alles schief läuft.
Frage 1: Gibt es mit VBA eine Möglichkeit DIREKT abzufragen "hallo System, was ist dein aktueller Dezimaltrenner"?
Frage 2: welche Tricks fallen euch außer "0.0 in String verwandeln und mittleres Zeichen extrahieren" noch ein, um schnell an diese Einstellung zu kommen?
Frage 3: hat jemand noch einen anderen Ansatz, um die Verwendbarkeit der numerischen Daten auch nach kopieren auf ein anderes System sicherzustellen?
MfG
Rouven
Frage 1: Gibt es mit VBA eine Möglichkeit DIREKT abzufragen "hallo System, was ist dein aktueller Dezimaltrenner"?
Workaroundversuch: Einfach eine Nachkommazahl in einen String verwandeln und diesen untersuchen.
Frage 2: welche Tricks fallen euch außer "0.0 in String verwandeln und mittleres Zeichen extrahieren" noch ein, um schnell an diese Einstellung zu kommen?
Äh. ;)
Frage 3: hat jemand noch einen anderen Ansatz, um die Verwendbarkeit der numerischen Daten auch nach kopieren auf ein anderes System sicherzustellen?
Das o.g. ist OK, alle anderen Versuche, bspw. an Systemeinstellungen zu kommen, bringen kein Glück.