SqlParameter - Unterschied .NET1.1 und .NET2?

09/12/2009 - 14:37 von Volker Strähle | Report spam
Tag zusammen,

ich habe unter .NET 1.1 folgenden, funktioierenden Code:

Dim pdiscounttotal As New SqlParameter("@Discount_Total",
SqlDbType.Decimal)
pdiscounttotal.Scale = 2
pdiscounttotal.Value = Discount_Total
myCommand.Parameters.Add(pdiscounttotal)

Führe ich diesen Code in einem .NET 2.0 Programm aus erhalte ich den Fehler:

"Der Parameterwert '1,00' befindet sich außerhalb des gültigen Bereichs."

Ändere ich den Code wie folgt:

Dim pdiscounttotal As New SqlParameter("@Discount_Total",
SqlDbType.Decimal)
pdiscounttotal.Scale = 2
pdiscounttotal.Precision = 18
pdiscounttotal.Value = Discount_Total
myCommand.Parameters.Add(pdiscounttotal)

funktioniert es wieder.

Es ist beides mal die selbe Datenbank mit der selben Prozedur.

Ist das normal oder habe ich was übersehen?


Volker
 

Lesen sie die antworten

#1 Elmar Boye
09/12/2009 - 22:58 | Warnen spam
Hallo Volker,

"Volker Stràhle" schrieb ...
ich habe unter .NET 1.1 folgenden, funktioierenden Code:

Dim pdiscounttotal As New SqlParameter("@Discount_Total", SqlDbType.Decimal)
pdiscounttotal.Scale = 2
pdiscounttotal.Value = Discount_Total
myCommand.Parameters.Add(pdiscounttotal)

Führe ich diesen Code in einem .NET 2.0 Programm aus erhalte ich den Fehler:

"Der Parameterwert '1,00' befindet sich außerhalb des gültigen Bereichs."

Ändere ich den Code wie folgt:

Dim pdiscounttotal As New SqlParameter("@Discount_Total", SqlDbType.Decimal)
pdiscounttotal.Scale = 2
pdiscounttotal.Precision = 18
pdiscounttotal.Value = Discount_Total
myCommand.Parameters.Add(pdiscounttotal)

funktioniert es wieder.

Es ist beides mal die selbe Datenbank mit der selben Prozedur.

Ist das normal oder habe ich was übersehen?



.NET 2.0 prüft die Werte für Precision und Scale, siehe Hinweis bei:
http://msdn.microsoft.com/de-de/lib...ision.aspx

Und bei einem Decimal ist nunmal Precision _und_ Scale notwendig.
Sofern man sie angibt, ansonsten werden die Angaben es aus dem Wert ermittelt.

Gruß Elmar

Ähnliche fragen