1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
1348
1348
EMPFEHLEN
-
Hi,
derzeit habe ich folgendes Problem!
Mit VB.NET verwalte ich Artikel mit ek (Einkaufspreis) und vk (Verkaufspreis) in Euro.
Wenn ich die Eingaben nun mit Double.Prase(xyz) in eine Variable schreibe und sie dann per cmd.ExecuteScalar() in die MySQL Datenbank schreibe habe ich das Problem, dass dort unter Decimal das Trennzeichen nicht "," (Komma) sondern "." (Punkt) ist!
Im Moment habe ich es so glöst, dass die DB auf varchar(5) steht, was mir aber nicht gefällt.
Übergebe ich in VB.NET einen Preis mir . (z.b. 1.90), erkennt er den Punkt nicht als Trennzeichen, sondern als Hundertertrennung und schreibt 190 in die DB.
Mit einer Funktion, welche den Punkt durch eun Komma ersetzt habe ich schon eingebaut, aber die DB muss dazu immer noch auf varchar(5) stehen.
Bekommt man das irgendwie anders gelöst?
THX
Timee
-
Ich hatte das selbe Problem. Ich weiss nicht wie du deine Daten genau in die Datenbank schreibst, ich jedenfalls habe meine Daten aus einer Textbox gelesen und per Update Befehl in die DB geschrieben. Sieht dann ungefähr so aus
Code :1 2 3 4
dim str as string = textbox.text.Replace(",",".") ... cmdStr = "UPDATE tabelle Set Preis = " & str & " WHERE ID = 2;"
'Preis' ist dann ein Double in der DB. So funktioniert es jedenfalls bei mir, vielleicht hilft es dir ja weiter.
-
Hast du dann die DB auf varchar, text oder so stehen?
Meine DB hatte ich am anfang auf Decimal (was mir am besten gefallen hat), den mit varchar(5) schneidet er die Nullen am Ende ab, was nicht so schön aussieht, so wir z.b. aus 1,90 nach dem DB Update eine 1,9
-
11.03.09 16:05 #4
- Registriert seit
- Feb 2008
- Ort
- Salzhemmendorf(Nds)
- Beiträge
- 51
Moin,
SQL-CommandString so zusammenstellen verursacht IMMER Probleme - wie ja selbst festgestellt
Die eleganteste Lösung ist -> Verwendung von Parametern.
Beispielcode
Hier wird erstmal das Statement vorbereitet und kann dann wie folgt aufgerufen werden:Code :1 2 3 4 5 6 7
public void PreisUpdate( string preis, int id) { MySqlCommand cmdStr = new MySqlCommand ( "UPDATE tabelle SET Preis = ?PREIS WHERE ID = ?ID" ); cmdStr.Parameters.Add ( "?PREIS", MySqlDbType.Decimal, 5 ); cmdStr.Parameters.Add ( "?ID", MySqlDbType.Int16, 0 ); ... }
Code :1
PreisUpdate ( meineTextBox.Text, meineDatensatzID );
Der Vorteil von Parametern ist u,.a. der, dass die Datenbank bzw der DBServer den übergebenen Parameterwert automatisch in das Datenbank-conforme Format umwandelt; in Eurem Fall z.B. das deutsche Gleitkomma-Format in das allgemein übliche US-Gleitkomma-Format -> will sagen: das dt. Dezimaltrennzeichen wird entsprechend in das US-Dezimaltrennzeichen umgewandelt.
Weitergehende Informationen zu Parametern siehe u.a. hier:
http://dev.mysql.com/doc/refman/5.1/de/index.html (MySqlCommand.Parameters)
Das Bsp. oben ist in C# dürfte aber ohne grosse Probs auf VB umzusetzen sein...
RainerEs ist erstaunlich, was man alles findet, wenn man etwas sucht...
-
-
Danke für die Info, werd mich da mal schlau machen!
Ähnliche Themen
-
[c++] dezimal --> binär
Von DarkSean im Forum C/C++Antworten: 17Letzter Beitrag: 14.11.10, 21:33 -
Dezimal -> Hex Problem
Von NoGFX im Forum Flash PlattformAntworten: 5Letzter Beitrag: 10.05.07, 16:27 -
Hexa --> Dezimal
Von yidaki im Forum C/C++Antworten: 1Letzter Beitrag: 15.01.05, 20:14 -
Von dezimal in Bin, Okt, Hex
Von Ganja03 im Forum C/C++Antworten: 2Letzter Beitrag: 06.12.04, 15:26 -
Dezimal -> Hex
Von Strater im Forum C/C++Antworten: 3Letzter Beitrag: 24.08.04, 22:42





Zitieren
. Das mit den Parametern wollt ich sowieso schon mal genauer wissen, jetzt weis ichs, Danke 
Login





