Laden...

Format Problem mit Double Werten

Erstellt von st@tic vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.339 Views
S
st@tic Themenstarter:in
281 Beiträge seit 2004
vor 17 Jahren
Format Problem mit Double Werten

ich hab ein kleines Problem mit dem Speichern von Doublewerten in eine Accessdatenbank

solange der Doublewert in dem Attribut seiner Klasse ist nutzt er den . als Dezimaltrennzeichen sobald ich ihn in den INSERT INTO String reinschreiben möchte macht mir .NET aus 23.45 23,45
dadurch sollen in 9 spalten 10 werte reingeschrieben werden.

also hab ich mal bisschen rumgestöbert und bin auch auf den FormatProvider gestoßen.
Format Problem

mit diesem schnippsel

System.IFormatProvider fp = new System.Globalization.CultureInfo("en-US");
System.String sa = "1,23432";
System.String s = double.Parse(sa, fp).ToString();
System.String a = sa.Replace(",", ".");

so funktioniert es natürlich auch. nur wenn ich jetzt den string in eine Spalte, welche als Zahl (Double) angegeben ist, speichern will, kommt logischerweise eine Fehlermeldung

Das Feld ist zu klein für die Datenmenge, die Sie hinzufügen wollten. Versuchen Sie, weniger Daten einzufügen.

ich weiß jetzt leider nicht wie ich diesen string in nen double convertieren soll damit er auch anstatt einem , ein . verwendet

habs nochmal im SQL Statement mit Convert.ToDouble bzw mit double.parse probiert und immer den FormatProvider (fp) mitgegeben. aber er macht immer nur ein komma.

für einen kleinen Codeschnippsel wäre ich dankbar. bin mit meiner rumprobiererei am ende und weiß nicht mehr weiter

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo st@tic,

verwende SqlParameter, statt aus dem double.Parameter einen String zu machen.

herbivore

2.082 Beiträge seit 2005
vor 17 Jahren

Hallo st@tic,

wie herbivore geschrieben hat, SqlParameter verwenden.

Zu dem Problem: Das liegt am System.Globalization.CultureInfo.CurrentCulture.NumberFormat

Frage an dich: Verwendest du das Englische oder das Deutsche Framework?

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

369 Beiträge seit 2006
vor 17 Jahren

Das hat eigentlich nichts mit der Sprachversion des Frameworks sondern vielmehr mit den Betriebsystemeinstellungen zu tun...

T
512 Beiträge seit 2006
vor 17 Jahren

Und der Installation vom SQL Server. Zumindest vor 2005 hings von der Installation ab, welches Format Standard war.

Parameter lösen diese Probleme vollständig. Besonders haarig wirds ja dann bei Datumskonvertierung.

e.f.q.

Aus Falschem folgt Beliebiges

369 Beiträge seit 2006
vor 17 Jahren

"Die Kultur ist eine Eigenschaft des gerade ausgeführten Threads. Diese schreibgeschützte Eigenschaft gibt Thread.CurrentCulture zurück. Beim Starten eines Threads wird seine Kultur am Anfang mithilfe von GetUserDefaultLCID aus der Windows-API bestimmt." (Dokumentation zu CultureInfo.CurrentCulture)

... war auch schon unter .Net 1 so!

T
512 Beiträge seit 2006
vor 17 Jahren

Das ist ja schön und gut, sagt aber nicht aus, ob der SQL Server das auch versteht.

EDIT: Ups, ging um Access. Gut, keine Ahnung welche Sprache das spricht und woher Access die weiß.

e.f.q.

Aus Falschem folgt Beliebiges

S
st@tic Themenstarter:in
281 Beiträge seit 2004
vor 17 Jahren

Original von herbivore
Hallo st@tic,

verwende SqlParameter, statt aus dem double.Parameter einen String zu machen.

herbivore

SqlParameter?
meinste damit cmd.Parameters.Add()?
oder wie?

49.485 Beiträge seit 2005
vor 17 Jahren

Hallo st@tic,

ja

herbivore