Problem mit Komma und Punkt in VB

In meiner VB-Anwendung habe ich folgendes Problem:

Es handelt sich um eine Artikelverwaltung. Die Daten
liegen in einer Access 2000-Datenbank, der Zugriff
erfolgt über eine ADO-Connection. Die Daten werden
per Code in die einzelnen Felder des Formulares
kopiert und nach einer Änderung per Code wieder
in die Datenbank geschrieben.
In der Datenbank gibt es die Felder „Normalpreis“ und
„Sonderpreis“, beide vom Typ „Währung“. Auf dem Formular
gibt es gleichnamige Textfelder ohne jede Formatierung.
Werden die Textfelder „Normalpreis“ und „Sonderpreis“ nun
mit Zahlen gefüllt, die ein Komma enthalten, z. B. „42,50“,
wird nach dem Speichern des Datensatzes daraus „4250“.
Ich muss statt des Kommas ein Punkt eingeben („42.50“).
Nach dem Speichern des Datensatzes wird daraus „42,50“!
Und wenn ich den Datensatz wieder bearbeite, ohne das Feld
zu ändern, wird nach dem Speichern daraus wieder „4250“.
Muss ich das Problem per Code lösen oder gibt es da irgendwo
eine Eigenschaft?

Damit keine Mißverständnisse auftauchen: Ich möchte NICHT
die Eingabe eines Kommas abfangen und durch einen Punkt
ersetzen oder umgekehrt. Der Benutzer soll ein Komma wie
gewohnt eingeben, dieses soll dann aber auch so in der
Datenbank landen! Muss ich jetzt vor dem Speichern des
Datensatzes das Komma durch einen Punkt ersetzen???

Tobias

hallo,

ja, du must vor schreiben des datensatzes das komma durch einen punkt ersetzen

geht mit der funktion „replace“

gruß

rasta

Damit keine Mißverständnisse auftauchen: Ich möchte NICHT
die Eingabe eines Kommas abfangen und durch einen Punkt
ersetzen oder umgekehrt. Der Benutzer soll ein Komma wie
gewohnt eingeben, dieses soll dann aber auch so in der
Datenbank landen! Muss ich jetzt vor dem Speichern des
Datensatzes das Komma durch einen Punkt ersetzen???

Tobias

Damit keine Mißverständnisse auftauchen: Ich möchte NICHT
die Eingabe eines Kommas abfangen und durch einen Punkt
ersetzen oder umgekehrt. Der Benutzer soll ein Komma wie
gewohnt eingeben, dieses soll dann aber auch so in der
Datenbank landen! Muss ich jetzt vor dem Speichern des
Datensatzes das Komma durch einen Punkt ersetzen???

hallo Tobias,

warum eigentlich nicht?

http://home.arcor.de/vba-home/vba_splitter_u.shtml#t…

Ich habe derartige „Filter“ gern verwendet und auch bei den Anwendern kamen sie gut an, weil sie manche Eingabe vereinfachten und Eingabefehler reduzierten. Sie können in diesem Fall Komma oder Punkt verwenden, gerade wie es ihnen Spaß macht.

Günter
http://www.kirov-center.org

Hi!

Das Problem liegt primär nicht an VB sondern an den falschen Ländereinstellungen an deinem Computer. Du kannst unter start-einstellungen-systemsteuerung und dort bei ländereinstellungen die einstellung so ändern, daß das komma als dezimaltrennzeichen genutzt wird.

Das gleiche Problem wirst du sonst an andren Stellen auch haben…

Gruß

Bernd

Hi!

Damit keine Mißverständnisse auftauchen: Ich möchte NICHT
die Eingabe eines Kommas abfangen und durch einen Punkt
ersetzen oder umgekehrt. Der Benutzer soll ein Komma wie
gewohnt eingeben, dieses soll dann aber auch so in der
Datenbank landen! Muss ich jetzt vor dem Speichern des
Datensatzes das Komma durch einen Punkt ersetzen???

Klassisches Problem, wenn bei der Programmierung das Drei-Schichten-Modell nicht beachtet wird! :wink:

Wenn das Programm sauber nach dem Three-Tiers-Konzept aufgebaut würde, dann gäbe es dieses Problem nicht. Soll heißen: es gibt eine Ebene, die für die Präsentation des Daten in der Dialog-Oberfläche zuständig ist. Hier wäre z.B. die Problematik der Dezimalstelle (und nicht zu vergessen: das Tausender-Trennzeichen!) abzufangen.

Die mittlere Ebene befasst sich ausschließlich mit der Verarbeitung der Daten (sollen die Werte aus der Oberfläche z.B. als Strings oder als nummerische Werte verarbeitet werden).

Die dritte Ebene übergibt die Daten in der korrekten Form an die Datenbank (z.B. ob Zahlenwerte mit Dezimalstellen oder ohne gespeichert werden, oder ob ein Kalenderdatum im Format DDMMYYYY oder DD.MM.YYYY oder YYYYDDMM oder als Jahrhunderttag abgelegt wird).

Rückwärts muss entsprechend ausprogrammiert werden. Verlangt das Programm dann irgendwann eine Umstellung, etwa den Wegfall des Tausender-Trennzeichens, so muss nicht das ganze System umgestellt werden (etwa in der Ländereinstellung), sondern nur die Schnittstelle zur Präsentation der Daten im Dialog.

Also: Präsentation der Daten und Verarbeitung der Daten strikt voneinander trennen. Dann bist du immer auf der sauberen Seite.

Grüße
Heinrich