Problemas con datos monetarios

14/11/2007 - 13:23 por Fabiana | Informe spam
Hola a todos. Tengo un problema de conversion de comas y puntos entre SQL
Server y C#, a ver si alguien me puede echar una mano.
En la BD tengo un campo declarado de tipo money. Para traerlo y mostrarlo en
un DataView hago un Select convert(varchar,precio,1) para que ya me lo traiga
con los separadores de mil y decimales, y con solo 2 decimales que es lo que
necesito, ya que el campo de tipo money usa 4 decimales.
El problema es que SQL Server me pone como separador de decimales el punto y
como separador de miles la coma, con lo que al leerlo en C# y convertirlo a
Double para trabajar con él me da error de conversión, ya que en el sistema
está declarado el punto como separador de mil y la coma para los decimales.
Alguien me puede decir como puedo solucionar esto????
EL tipo smallmoney que tiene dos decimales no me sirve ya que necesito
guardar cantidades de millones.
Mil gracias por adelantado.
 

Leer las respuestas

#1 Marcos Mellibovsky
14/11/2007 - 14:41 | Informe spam
Hola Fabiana,
El problema es que estas pasando los datos entre SQL y c# como texto. Sql lo
guarda como numero, le pedis que lo convierta a texto. Luego en c# tomas el
texto y lo intentas convertir nuevamente en numero.
En general tenes que evitar pasar datos entre la aplicación y la base de
datos como texto parqa evitar problemas en las conversiones y ademas, según
como lo hagas podes exponerte a SQL Injection. Te conviene pasar los datos
nativos asi la conversiones necesarias la va a hacer el provider de la base
que sabe muy bien como hacerlo.
Luego de cada lado haces la conversión necesaria.

En tu caso, en lugar de poner en el select convert(varchar,precio,1) pedi
directamente la columna precio y usa la propiedad DataFormatString de la
columna del gridview para que se vea como vos queres.

Saludos
Marcos Mellibovsky
MCT MCTS MCSD.NET MCDBA MCSE...
Córdoba Argentina


"Fabiana" wrote in message
news:
Hola a todos. Tengo un problema de conversion de comas y puntos entre SQL
Server y C#, a ver si alguien me puede echar una mano.
En la BD tengo un campo declarado de tipo money. Para traerlo y mostrarlo
en
un DataView hago un Select convert(varchar,precio,1) para que ya me lo
traiga
con los separadores de mil y decimales, y con solo 2 decimales que es lo
que
necesito, ya que el campo de tipo money usa 4 decimales.
El problema es que SQL Server me pone como separador de decimales el punto
y
como separador de miles la coma, con lo que al leerlo en C# y convertirlo
a
Double para trabajar con él me da error de conversión, ya que en el
sistema
está declarado el punto como separador de mil y la coma para los
decimales.
Alguien me puede decir como puedo solucionar esto????
EL tipo smallmoney que tiene dos decimales no me sirve ya que necesito
guardar cantidades de millones.
Mil gracias por adelantado.

Preguntas similares